- 一对一
注意:
1.如果映射的字段和对象的属性一致,则可以省略不写
2.最后保留主键的字段信息
3.封装单个对象使用association
4.association中property代表封装对象的属性,javatype代表指定属性的类型,注意路径
5.多表联查必须使用resultMap
6.如果遇到关联封装,则必须全部配置映射关系,但可以在resultMap中使用autoMapping=true,这样就可以实现自动映射,不用写属性和字段名一致的映射啦
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class Emp implements Serializable {
private Integer id;
private String name;
private Integer age;
private Dept d; //一对一
}
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Dept implements Serializable {
private Integer deptId;
private String deptName;
private List empList; //一对多
}
select e.id,e.name,e.age,d.dept_id,d.dept_name from emp e,dept d where e.dept_id = d.dept_id
- 关联查询和子查询
子查询:
1.association标签中的column=子查询的字段信息
2.select根据column中的数据实现子查询,select=sql的id
一对多:
一对多固定方法:collection标签,property值为映射的“多”属性名,oftype为“多”返回值类型
select d.dept_id,d.dept_name,e.id,e.name,e.age from dept d left join emp e on d.dept_id = e.dept_id
- 配置文件自动映射
官网API:mapUnderscoreToCamelCase
- mybatis缓存机制
作用: 可以降低用户访问物理设备的频次,提高用户的响应速度
扩展mybatis自身缓存: 一级缓存/二级缓存
redis: 读10万次/s,写8.6万次每秒
二级缓存: 默认开启,但需要手动标识,二级缓存可以在同一个sqlSessionFactory内部有效
二级缓存标识符: 在Mapper标签里面添加·



