这篇文章主要介绍了Mybatis select记录封装的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
select记录封装
返回一个List集合, resultType要写集合中元素的类型
select * from tbl_employee where last_name like #{lastName}
返回一条记录的map, key为列名, 值就是对应的值
select * from tbl_employee where id=#{id}
多条记录封装成一个map, key为id, 值是记录封装后的javaBean
//@MapKey:告诉mybatis封装这个map的时候使用哪个属性作为map的key @MapKey("lastName") public Map getEmpByLastNameLikeReturnMap(String lastName);
select * from tbl_employee where last_name like #{lastName}
自动映射配置
全局setting设置
1.autoMappingBehavior默认为PARTIAL, 开启自动映射功能;唯一的要求是列名和javaBean属性名一致
2.mapUnderscoreToCamelCase=true, 开启自动驼峰命名规范映射功能
创建表
create table tb_dept ( id int(11) primary key auto_increment, dept_name varchar(255) )
添加列
alter table tb_emp add column d_id int(11);
添加约束
alter table tb_emp add constraint fk_emp_dept foreign key(d_id) references tb_dept(id);
场景一:
查询Employee的同时查询员工对应的部门;一个员工有与之对应的部门信息;
使用association定义关联的单个对象的封装规则;
association分步查询
select id,dept_name departmentName from tbl_dept where id=#{id}
association分步查询&延迟加载
Dept: 我们每次查询Employee对象的时候,都将一起查询出来。 部门信息在我们使用的时候再去查询; 分段查询的基础之上加上两个配置: -->
关联集合
嵌套结果集的方式,使用collection标签定义关联的集合类型的属性封装规则
场景二:
查询部门的时候将部门对应的所有员工信息也查询出来:注释在DepartmentMapper.xml中
SELECT d.id did,d.dept_name dept_name, e.id eid,e.last_name last_name,e.email email,e.gender gender FROM tbl_dept d LEFT JOIN tbl_employee e ON d.id=e.d_id WHERE d.id=#{id}
collection:分段查询