Mybatis
1.Mybatis概述
1 | Mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花精力去处理加载驱动,创建连接,创建statement等繁杂的过程 |
2.搭建Mybatis开发环境
2.1创建Maven工程
1 | 创建 mybatis01 的工程,工程信息如下: |
2.2添加Mybatis3.4.5的坐标
在pom.xml文件中添加Mybatis3.4.5的坐标,如下:
1 | <dependencies> |
2.3编写必要代码(实体类和持久层接口)
2.4编写SqlMapConfig.xml配置文件
1 | <?xml version="1.0" encoding="UTF-8"?> |
2.5编写映射配置文件
2.6编写测试类
3.Mybatis中用到的设计模式
1 | 工厂模式(SqlSessionFactory) |
4.Mybatis与JDBC编程的比较
1 | 1.数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。 |
5.当编写的实体类属性名和数据库表的列名不一致时
5.1出现的问题
1 | 查询出来的结果会都为null |
5.2解决方案一
1 | 修改映射配置文件 |
5.3解决方案二
resultMap结果类型
1 | resultMap 标签可以建立查询的列名和实体类的属性名称不一致时建立对应关系。从而实现封装。 |
6.Mybatis连接池
1 | Mybatis连接池与web中的连接池不同,Mybatis中的连接池使用的自己的连接池技术,在Mybatis的SqlMapConfig.xml配置文件中,通过<dataSource type="pooled">来实现Mybatis中连接池的配置。 |
6.1Mybatis连接池的分类
1 | UNPOOLED 不使用连接池的数据源 |
1 | 相应地,MyBatis 内部分别定义了实现了 java.sql.DataSource 接口的 UnpooledDataSource,PooledDataSource 类来表示 UNPOOLED、POOLED 类型的数据源。 |
6.2Mybatis中数据源的配置
1 | 数据源配置就是在 SqlMapConfig.xml 文件中,具体配置如下: |
7.Mybatis中事务控制
7.3Mybatis中事务提交方式
1 | Mybatis中事务的提交方式,本质上就是调用JDBC的setAutoComment()来实现事务控制,默认情况下setAutoComment()的参数为false,所以我们要手动使用SqlSession.commit()来提交事务 |
7.4Mybatis自动提交事务的设置
1 | 在创建SqlSession工厂对象时,传入true |
8.Mybatis中的动态SQL语句
1 | 主要就是使用Mybatis中提供的动态SQL语句标签 |
9.Mybatis延迟加载策略
9.1何为延迟加载
1 | 延迟加载:就是需要用到数据是才进行加载,不需要用到数据时就不加载数据。也称为懒加载 |
9.2开启Mybatis的延迟加载策略
1 | 1.需要再Mybatis的配置文件SqlMapConfig.xml文件中添加延迟加载的配置 |
10.Mybatis缓存
Mybatis通过缓存策略来减少数据库的查询次数,从而提高性能
10.1Mybatis一级缓存
1 | 一级缓存是 SqlSession 级别的缓存,只要 SqlSession 没有 flush 或 close,它就存在。 |
10.2Mybatis二级缓存
1 | 二级缓存是 mapper 映射级别的缓存,多个 SqlSession 去操作同一个 Mapper 映射的 sql 语句,多个SqlSession 可以共用二级缓存,二级缓存是跨 SqlSession 的。 |
10.2.1二级缓存的开启与关闭
1 | 第一步:在SqlMapConfig.xml文件开启二级缓存 |
10.2.2基于注解的二级缓存
1 | 1.在SqlMapConfig中开启二级缓存支持 |
10.2.3二级缓存的注意事项
1 | 当我们在使用二级缓存时,所缓存的类一定要实现 java.io.Serializable 接口,这种就可以使用序列化方式来保存对象。 |
11.Mybatis的注解开发
11.1Mybatis常用注解说明
1 | @Insert:实现新增 |