ResultMap结果集映射
数据库中的字段 id name pwd
新建一个项目,拷贝之前的,
测试实体类字段不一致的情况
public class User {
private int id;
private String name;
private String password;
}
<select id="getUserById" parameterType="int" resultType="User">
select * from mybatis.user where id=#{id}
</select>
测试
package com.tian.dao;
import com.tian.pojo.User;
import com.tian.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserMapperTest {
@Test
public void test(){
//获得sqlsession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//方式一:getMapper 执行sql
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1);
System.out.println(user);
//关闭sqlsession
sqlSession.close();
}
//User{id=1, name='狂神', password='null'}
}
解决方法:
- 起别名
<select id="getUserById" parameterType="int" resultType="User">
select id,name,pwd as password from mybatis.user where id=#{id}
</select>
ResultMap
结果集映射
id name pwd
id name password
<!--结果集映射-->
<resultMap id="UserMap" type="User">
<!-- column数据库中的字段,property实体类中的属性 一样的可以不用写(什么不一样写什么就行) -->
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserById" resultMap="UserMap">
select * from mybatis.user where id=#{id}
</select>
- resultMap元素是 MyBatis中最重要最强大的元素
- ResultMap 的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。
- ResultMap最优秀的地方在于,虽然你已经对它相当了解了,但是根本就不需要显式地用到他们。
- 如果世界总是这么简单就好了!