MyBatis入门——day3
一 . 使用注解(annotation)开发
1 . 接口中:
2 . 核心配置文件中也要绑定接口
二 . 注解的本质:反射机制的实现,
三 . 注解的底层:动态代理
四 . 反射机制是什么:
反射就是把Java类中的各个成分映射成一个个的Java对象。
即在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;
对于任意一个对象,都能调用它的任意方法和属性
- 在运行时判断任意一个对象所属的类。
- 在运行时构造任意一个类的对象。
- 在运行时判断任意一个类所具有的成员变量和方法。
- 在运行时调用任意一个对象的方法。
- 生成动态代理
五. 在工具类中设置自动提交
openSession设置为 true
六 . 实现
1 . 方法存在多个参数时,每个参数前必须加上 @Param 注解,必须保证注解的属性与此处属性名称相同
例一
例二(增删改查的注解写法)
七 . 关于@Param()注解
1 . 参数为基本类型和 String 类型时需要加上
2 . 引用类型不需要
3 . SQL 中引用的就是@Param()中设定的属性名
八 . # 与 $ 的区别
1 . #{} :对 预编译语句中的 占位符 进行替换
2 . ${} :直接对 字符串 进行替换
九 . 第三方工具 Lombok(偷懒神器) PS:不太推荐使用
@Data:生成 get、set、toString、Hashcode、equals 等方法
@AllArgsConstructor:有参构造
@NoArgsConstructor:无参构造
使用步骤
1 . 安装Lombok 插件
2 . 在项目中导入 Lombok的jar包
3 . 使用
十 . 多对一查询
properties:java 类中的,要映射到数据表中某个对应字段的属性名
column:properties 再数据表中所对应的字段名
javaType:
1 . 嵌套查询(又称子查询,不太容易理解) 所有学生的信息和对应的老师信息
2 . 链表查询(可以理解用SQL里的多表查询) !!!!这种比较好理解!!!!!
把 resultMap 设置为 StudentTeacher
在下面用resultMap 说明 StudentTeacher 中那些 对象(java 类) 与数据库字段相对应
对于有多个属性的对象,使用 association 进行说明
十一 . 一对多查询(通过一个老师,查询其下的多个学生)
1 . 实体类
2 .
总结:
1 . 集合用:collection(用于多对一)
2 . 关联:association(用于一对多)
3 . javaType:指定 实体类中的属性
4 . ofType:指定 映射到 List 或者 集合中 的类型