1、當接口的返回類型是集合List時,resultType要寫集合中元素的類型
示例如下:
接口定義: package com.mybatis.dao; import com.mybatis.bean.Employee; import java.util.*; public interface EmployeeMapper { public List<Employee> getEmpByLastName(String lastName); } mapper定義: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mybatis.dao.EmployeeMapper"> <select id="getEmpByLastName" resultType="com.mybatis.bean.Employee"> select * from tbl_employee where last_name like #{lastName} </select> </mapper> 測試代碼: package com.mybatis.demo; import java.io.*; import java.util.*; import com.mybatis.bean.Employee; import com.mybatis.dao.EmployeeMapper; import org.apache.ibatis.io.*; import org.apache.ibatis.session.*; import org.junit.Test; public class MyTest { public SqlSessionFactory getSqlSessionFactory() throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); return new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testSelect() throws IOException { SqlSessionFactory sqlSessionFactory = getSqlSessionFactory(); SqlSession openSession = sqlSessionFactory.openSession(true); try { EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); List<Employee> employees = mapper.getEmpByLastName("%e%"); for (Employee emp : employees) { System.out.println(emp); } } finally { openSession.close(); } } }
2、@MapKey注解:指定使用哪個實體的屬性作為key
示例如下:
接口定義: package com.mybatis.dao; import com.mybatis.bean.Employee; import org.apache.ibatis.annotations.MapKey; import java.util.*; public interface EmployeeMapper { //返回一條記錄的map;key就是列名,值就是對應的值 public Map<String, Object> getEmpByIdReturnMap(Integer id); //多條記錄封裝一個map:Map<Integer,Employee>:鍵是這條記錄的主鍵,值是記錄封裝后的javaBean //@MapKey:告訴mybatis封裝這個map的時候使用哪個屬性作為map的key @MapKey("id") public Map<Integer, Employee> getEmpReturnMap(String lastName); } mapper定義: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mybatis.dao.EmployeeMapper"> <!--public Map<String, Object> getEmpByIdReturnMap(Integer id);--> <select id="getEmpByIdReturnMap" resultType="map"> select * from tbl_employee where id=#{id} </select> <!--public Map<Integer, Employee> getEmpReturnMap(String lastName); --> <select id="getEmpReturnMap" resultType="com.mybatis.bean.Employee"> select * from tbl_employee where last_name like #{lastName} </select> </mapper> 測試代碼: package com.mybatis.demo; import java.io.*; import java.util.*; import com.mybatis.bean.Employee; import com.mybatis.dao.EmployeeMapper; import org.apache.ibatis.io.*; import org.apache.ibatis.session.*; import org.junit.Test; public class MyTest { public SqlSessionFactory getSqlSessionFactory() throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); return new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testSelectOne() throws IOException { SqlSessionFactory sqlSessionFactory = getSqlSessionFactory(); SqlSession openSession = sqlSessionFactory.openSession(true); try { EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); Map<String, Object> employee = mapper.getEmpByIdReturnMap(1); System.out.println(employee); } finally { openSession.close(); } } @Test public void testSelectMany() throws IOException { SqlSessionFactory sqlSessionFactory = getSqlSessionFactory(); SqlSession openSession = sqlSessionFactory.openSession(true); try { EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); Map<Integer, Employee> employee = mapper.getEmpReturnMap("%e%"); System.out.println(employee); } finally { openSession.close(); } } }