Mybatis(2)
目录
一、Mybatis工具类的封装
二、mapper文件中的另一种取值语法
- ${}取值方式的使用
- #{} 与${} 两种语法生成SQL语句的方式对比
2.1 #{ }
2.2 ${ }
三、mybatis其他常用的全局配置
- 给实体类起别名
① 第一种方式
② 第二种方式 - 配置文件参数化
2.1 实际开发的场景下, mybtais-config.xml全局配置文件的内容会比较大, 而针对于数据库相关的参数, 会涉及到经常的修改,为了提高项目的可维护性,我们将数据相关的配置提取到一个单独的小配置文件保存。
2.2 重构过程
① 先将数据库相关参数保存到一个小配置文件
②在mybatis-config.xml中引入小配置文件
③ 在需要使用小配置文件参数的位置,取出小配置文件中的值
四、关于mybatis的结果集映射
-
mybatis默认结果集封装规则: mybatis默认会将数据库查询返回结果集中的字段名, 对应封装到实体类属性名一致的属性上。
-
当查询返回结果集中的字段名与实体属性名不一致的解决
2.1 第一种方案: 给字段起个别名,与对应实体类属性名一致。
2.2 第二种方案: 使用mybatis的resultMap自定义结果集映射关系。注意: resultMap未来主要用于多表查询时的结果集映射封装。
五、关联关系
- 一对一
一个人拥有一个身份证 。 一个身份证只能属于一个人。 - 一对多
一个部门有多个员工。 一个员工属于一个部门。
一个用户有多个订单。 一个订单属于某一个用户。
一个班级有多个学生。 一个学生属于一个班级。 - 多对多
一个学生可以选修多门课程。 一门课程可以被多名学生选修。
六、使用Mybatis开发关联关系的查询
-
表的设计
1.1 一对一的场景
一对一的场景,表的外键放在哪一方都可以。
1.2 一对多场景 : 外键存放在多的一方。 -
Java中的对应实体类设计
2.1 一对一 : 对于关系属性,放置在 根据谁找谁的 , 根据谁的一方。
2.2 一对多:对于关系属性,放置在 根据谁找谁的 , 根据谁的一方。
注意: 关系属性的确立,要根据实际的业务场景进行分析, 一般很少有双向关系的场景。 -
使用mybatis开发关联关系的查询
3.1 一对一mapper实现
3.2 一对多mapper实现
七、总结
- 关联关系Mybatis查询的实现
1.1 如果关系属性是一个简单的Java自定义对象类型,使用 association标签封装。
1.2 如果关系属性是一个list集合,则使用Collection标签封装。