欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis学习笔记——第三天

程序员文章站 2024-03-14 09:43:22
...

Mybatis学习笔记—第三天

Mybatis笔记 第三天

一.一对一关联关系数据的处理:student 和 computer

1. 在db里如何通过表的形式来存储数据和体现关系

Mybatis学习笔记——第三天

2. Java类里体现一对一关系

Mybatis学习笔记——第三天

3. 写dao (两个dao)

4. 给实现 ( 映射文件实现 )

  1. 没有关系属性的类对应的dao( ComputerDao ) — 单表操作
  2. 有关系属性的dao ( StudentDao ) — 增删改与单表一致, 查询特殊
    Mybatis学习笔记——第三天

二.多对多关系 student ~ course

1. 在db里建表 ( 存储数据本身 , 描述关系 )

Mybatis学习笔记——第三天

2. 在java里通过实体类描述数据和关系

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200109193925326.png)

3. 定义dao接口?

  1. 如果直接描述多对多关系会导致 ”数据库里表的个数”与“实体类的个数”不对等 ,
    一般情况下, 开发时只需要程序员提供”查询”业务 , 此时定义两个dao(针对两个
    实体类定义)即可
    ①没有关系属性的dao — 单表查询操作
    ②有关系属性的dao — 表连接查询操作(多表连接查询 — 3张)

Mybatis学习笔记——第三天

2) 如果业务里需要”增删改”功能 , 建议在业务需求分析时,直接将多对多拆分成两个
一对多( 通过添加一组中间的业务数据完成 )

Mybatis学习笔记——第三天

三.动态sql — 依靠标签在映射文件中动态拼接sql命令

1. <if test=”boolean值”> ... </if> 条件判断标签

Mybatis学习笔记——第三天

2. <where> : 代替where命令 , 标签可以动态的根据情况去掉命令后的多余的and或者or

Mybatis学习笔记——第三天

  1. 使用where标签
    Mybatis学习笔记——第三天
  2. 使用trim标签
    Mybatis学习笔记——第三天

3. <set> 标签 — 用在修改上

作用: 在修改时,去掉命令中多余的”,”
Mybatis学习笔记——第三天
1)使用set标签
Mybatis学习笔记——第三天
2) 使用标签
Mybatis学习笔记——第三天

4. 关于<foreach>标签

  1. 案例 : 批量删除
    Mybatis学习笔记——第三天
    2) 解决
    Mybatis学习笔记——第三天

5. 总结 : 针对每个命令的特殊处理方法

  1. insert ( 如果插入null值) : #{ xxx , jdbcType=XXXX }
  2. update ( 如果更新时有null值 ) : 和
  3. delete ( 批量删除 ) : where xxx in(…)
  4. select ( 筛选条件为null的情况 ) : 和

四.Mybatis缓存

1. 什么是缓存? 好处

Mybatis学习笔记——第三天

2. Mybatis里缓存的分类 — 提供缓存机制

1)一级缓存 : SqlSession级别的缓存( 默认提供 ) , sqlSession对象有一块缓存区域 ,
只要当前session执行过的sql命令结果会被缓存在自己的空间里, 不同
的session互不影响
2) 二级缓存 : mapper级别的缓存( 全局缓存 ) , mybatis为每一个namespace提供了一
块缓存区 , 不同session执行了同一个namespace里的查询命令, 结果都
会被缓存在”二级缓存里”

Mybatis学习笔记——第三天

3. 二级缓存使用步骤

1)开启mybatis的二级缓存
Mybatis学习笔记——第三天
2) 在当前的mapper文件里设置
Mybatis学习笔记——第三天

4. 二级缓存的特点

 1) 当session关闭时, session执行的查询结果会进入二级缓存
 2) 当session调用了接口的增删改方法 并提交 , 则二级缓存会被清空
相关标签: Mybatis mybatis