Review
1 多表映射(多表查询)
一对一:在一个表中创建另一个表的唯一标识字段(通常就是主键)
一对多:在多的这张表中创建一的这张的唯一标识字段
多对多:关系表 → 包含了两张表的唯一标识 → 互为一对多(本质)
例如:
一对一:User和UserDetail
一对多:User和Order
多对多:Student和Course
1.1 一对一
1.1.1 表关系的维护
1.1.2 javabean关系维护
1.1.3 查询
查询结果是User对象或User的数组或List
1.1.3.1分次查询
1.1.3.1.1分析过程
1.1.3.1.2代码
1.1.3.1.3单元测试
1.1.3.2连接查询
1.1.3.2.1分析过程
调整
1.1.3.2.2 代码
1.1.3.2.3 单元测试
1.2 一对多
1.2.1 表的关系的维护
多的表中创建一的表的唯一标识字段(通常是主键)
1.2.2 javabean关系维护
1.2.3 查询
1.2.3.1 分次查询
1.2.3.1.1 分析过程
1.2.3.1.2 代码
1.2.3.1.3 单元测试
1.2.3.2 连接查询
1.2.3.2.1 分析过程
1.2.3.2.2 代码
1.2.3.2.3 单元测试
1.2.3.3 多条记录的查询
sql语句有所区别
增加limit
分次查询:限制的左边的对象的记录数
连接查询:限制的整体结果的记录数
1.3 多对多
student和course的多对多关系
1.3.1表的关系的维护
1.3.2 javabean关系的维护
本质上就是互为一对多
1.3.3 查询
1.3.3.1 分次查询
1.3.3.1.1 分析过程
1.3.3.1.2 代码
1.3.3.1.3 单元测试
1.3.3.2 连接查询
1.3.3.2.1 分析过程
1.3.3.2.2 代码
1.3.3.2.3 单元测试
2 缓存和懒加载
2.1 缓存cacheEnabled
查询 → 有了缓存,执行相同的查询,会从缓存中获得结果,而不是重新建立查询过程
2.1.1 一级缓存
sqlSession级别、默认开启
2.1.1.1 失效
执行了增删改或执行了sqlSession的commit
2.1.2 二级缓存
命名空间级别,其实也开启,只不过要使用2级缓存需要做些事情
cacheEnabled默认值为true
1、cacheEnabled=true
2、查询结果的类需要实现序列化接口Serializable
3、映射文件中增加缓存的标记
2.1.2.1 使用二级缓存
案例:使用不同的sqlSession对应的mapper去执行同一个查询
2.1.2.1.1 准备
2.1.2.1.2 放入缓存
sqlSession的commit或close
2.2 懒加载lazyLoadingEnabled
懒加载
单例 → 使用的时候才完成实例化
mybatis → 需要使用的时候才去执行查询 → 分次查询的时候 → 第二次查询
2.2.1配置
2.2.2开启懒加载后,默认是否是懒加载:是
2.2.3不想懒加载了
3 注解
4 逆向工程mybatis-generator
根据数据库的表 → javabean、接口和对应的映射文件 → 接口和映射文件中也提供一些可用的方法
4.1 引入依赖
4.2 逆向工程的运行代码
4.3 逆向工程的配置文件
4.3.1取出注释
通常去除掉
4.3.2 jdbc连接信息
4.3.3 是否去除同名表 true
如果没有去除,有可能所有的数据库中存在同名表。映射文件里针对于每一个表都生成标签
,而标签的id是固定值 → 同一个映射文件下存在同名id的标签
4.3.4 javabean放哪里
4.3.5 接口放哪里
4.3.6 映射文件放哪里
4.3.7 哪些表要生成这些内容