MyBatis初步构建

IDEA版本构建MyBatis

传统
  1. JDBC->Dbutils(QueryRunner)->jdbcTemplate
  2. 编写sql、预编译、设置参数、执行sql、封装结果
  3. 功能简单:sql语句编写在java代码里面,硬编码高耦合的方式
MyBatis干了什么?
  1. 将sql写在配置文件中(关键步骤)
  2. MyBatis来预编译、设置参数、执行sql、封装结果
实例
  1. 创建maven管理的web工程,创建好相关包
  2. 导入依赖的jar包,利用maven管理jar包
  3. 编写mybatis配置文件和mapper接口和mapper接口对应的xml文件
  4. 写一个mybatis工具类,工具类中
    1. 读取配置文件
    2. 创建SqlSessionFactory工厂
    3. 使用工厂生产SqlSession对象
    4. 使用SqlSession创建的Mapper接口的代理对象
    5. 使用代理对象的执行方法
    6. 释放资源
//1. 读取配置文件
InputStream in = Resources.getResourceAsStream("Mybatis-config.xml");
//2. 创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sessionFactory = builder.build(in);
//3. 使用工厂创建SqlSession对象
SqlSession session = sessionFactory.openSession();
//4. 使用SqlSession创建Mapper接口的代理对象
IUserMapper userMapper = session.getMapper(IUserMapper.class);
//5. 使用代理对象执行方法
List<UserInfo> userInfos = userMapper.findAll();
for (UserInfo userInfo : userInfos) {
    System.out.println(userInfo);
}
//6. 释放资源
session.close();
in.close();
EL表达式失效?
<%@ page isELIgnored="false" %>
MyBatis配置文件中需要注意问题
    <mappers>
        <!--<mapper resource="com/hy/mapper/IUserMapper.xml"/>-->
        <package name="com.hy.mapper"/>
    </mappers>
MyBatis构建目录结构
  1. 创键目录

在这里插入图片描述
3. 导入依赖坐标

在这里插入图片描述
4. 编写Mybatis配置文件


5. 构造一个DButil类

在这里插入图片描述
6. 最终目录结构

在这里插入图片描述

缓存
  1. 缓存:

    • 指存在于内存中的临时数据
  2. 缓存的使用场景:

    • 适合缓存:经常查询并且不经常改变的,数据结果正确与否对最终结果影响不大的
    • 不适合缓存的:经常改变的数据,数据的正常对结果影响很大时,商品的库存,银行的汇率等
  3. MyBatis的一级缓存和二级缓存

    • 一级缓存:它指的是MyBatis中SqlSession对象的缓存,当执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中,该区域结构时一个Map,当我们再次查询同样的数据,MyBatis会先在SqlSession中查询是否存在,有直接用,当SqlSession对象消失时,MyBatis的一级缓存也消失
    • 清除一级缓存:
      • sqlSession.close()
      • sqlSession.clearCatch()
      • 对sqlSession进行修改,添加,删除时都会清空一级缓存
  4. 二级缓存

    • 指的是sqlSessionFactory对象的缓存。由同一个SqlSessionFactory对象创建的多个SqlSession共享其缓存
    • 使用二级缓存步骤:
      1. 让MyBatis框架支持二级缓存(在MyBatis配置文件中)
      2. 让当前的映射文件支持二级缓存(在mapper.xml中配置)
      3. 让当前的操作支持二级缓存(在select标签中配置)
连接池
  1. 实际开发中都会使用连接池

  2. 使用连接池可以减少我们获取连接所消耗的时间

  3. 提供了三种配置方式

    • 配置位置:Mybatis-config.xml文件中的标签
    • 配置属性:type:POOLED、UNPOOLED、DBCP(tomcat服务器中就是这种)
  4. 连接池是线程安全的,因为底层是synchronized代码块装着

  5. MyBatis使用POOLED连接池

事务
  1. 事务的4大特性

  2. 不考虑事务隔离性产生的三个问题

  3. 解决问题的办法,隔离级别

  4. Mybatis事务的提交时,可以在session连接时,openSession(boolean true/false)设置自动提交,Mybatis默认是false,因此,设置成true,他就变成自动提交了

  5. 它是通过sqlsession对象的commit方法和rollback方法实现事务的提交和回滚的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值