MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,将中列数据复制到对象的相应属性上,可以用于复制查询,两者不能同时用。
1、resultType
返回单个实例
<select id="selectUser" parameterType="int" resultType="User">
select * from user where id = #{id}
</select>返回List集合
<select id="selectUserAll" resultType="User" > <!-- resultMap="userMap" -->select * from user</select>
2、resultMap
简单查询:
<resultMap type="User" id="userMap"><id column="id" property="id"/><result column="name" property="name"/></resultMap>column:数据库中列名称,property:类中属性名称
resultMap:适合使用返回值是自定义实体类的情况
resultType:适合使用返回值得数据类型是非自定义的,即jdk的提供的类型
resultMap :
映射实体类的数据类型
resultMap的唯一标识
column: 库表的字段名
property: 实体类里的属性名
配置映射文件:
实体类Person.
package com.hao947.model; import java.util.Date; public class Person { private Integer personId; private String name; private Integer gender; private String personAddr; private Date birthday; @Override public String toString() { return "Person [personId=" + personId + ", name=" + name + ", gender=" + gender + ", personAddr=" + personAddr + ", birthday=" + birthday + "]"; } }
测试类
public class PersonTest { SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception { // 读取资源流 InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); // 初始化session工厂 sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); } @Test public void selectPersonById() { // 创建一个sqlsession SqlSession session = sqlSessionFactory.openSession(); try { Person p = session.selectOne( "com.hao947.sql.mapper.PersonMapper.selectPersonById", 1); System.out.println(p); } finally { session.close(); } } @Test public void selectPersonCount() { // 创建一个sqlsession SqlSession session = sqlSessionFactory.openSession(); try { Integer p = session.selectOne( "com.hao947.sql.mapper.PersonMapper.selectPersonCount"); System.out.println(p); } finally { session.close(); } } @Test public void selectPersonByIdWithMap() { // 创建一个sqlsession SqlSession session = sqlSessionFactory.openSession(); try { Mapmap = session.selectOne( "com.hao947.sql.mapper.PersonMapper.selectPersonByIdWithMap",1); System.out.println(map); } finally { session.close(); } } }