下面所有测试中的getSqlSessionFactory()均是提取出来的方法,在搭建环境的文章中能找到。
一、封装List
如果返回的是一个集合,要写集合中的元素类型。
mapper接口中的方法:
public List<Employee> getEmpsByLastNameLike(String lastName);
mapper.xml映射文件:
<!--public List<Employee> getEmpsByLastNameLike(String lastName);-->
<select id="getEmpsByLastNameLike" resultType="bean.Employee">
select * from tbl_employee where last_name like #{lastName};
</select>
测试:名字中带有 j 的员工信息
@Test
public void test06() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try {
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
List<Employee> empsByLastNameLike = mapper.getEmpsByLastNameLike("%j%");
for (Employee employee :empsByLastNameLike) {
System.out.println(employee);
}
}finally {
openSession.close();
}
}
二、封装Map
需求一:返回一条记录的map,key就是列名,值就是对应值
mapper接口中的方法:
public Map<String,Object> getEmpByReturnMap(Integer id);
mapper.xml映射文件:
resultMap直接写map,因为mybatis已经为JDK常用类起了别名,直接用小写map,不用写全类名java.util.Map;
<!-- public Map<String,Object> getEmpByReturnMap(Integer id);-->
<select id="getEmpByReturnMap" resultType="map">
select * from tbl_employee where id=#{id};
</select>
测试:将1号员工的信息封装成一个map,key为列名,value为对应查出来的值
@Test
public void test07() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try {
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
Map<String, Object> empByReturnMap = mapper.getEmpByReturnMap(1);
System.out.println(empByReturnMap );
}finally {
openSession.close();
}
}
需求二:多条记录封装一个Map<Integer,Employee>,键是这条记录的主键,值是封装后的JavaBean对象。
mapper接口中的方法:
使用@MapKey注解,告诉mybatis封装这个map的时候使用哪个属性作为map的key
@MapKey("id")
public Map<Integer,Employee> getEmpLastNameLikeReturnMap(String lastName);
mapper.xml映射文件:
多个记录,resultType写的是集合中元素的类型。
<select id="getEmpLastNameLikeReturnMap" resultType="bean.Employee">
select * from tbl_employee where last_name like #{lastName};
</select>
测试:
@Test
public void test08() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try {
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
Map<Integer, Employee> empLastNameLikeReturnMap = mapper.getEmpLastNameLikeReturnMap("%j%");
System.out.println(empLastNameLikeReturnMap);
}finally {
openSession.close();
}
}