- Mybatis 高级查询
- 映射配置文件深入
- 核心配置文件深入
- Mybatis 多表查询
- Mybatis 嵌套查询
Mybatis 高级查询
ResutlMap 属性
由前面可知,下面语句中resultType的作用是把结果封装到user这个实体类中
那么关于resultMap
- resultType
如果实体的属性名与表中字段名一致,将查询结果自动封装到实体类中 - ResutlMap
如果实体的属性名与表中字段名不一致,可以使用ResutlMap 实现手动封装到实体类中
ResutlMap 配置过程
- 编写UserMapper 接口
/*
查询所有用户
*/
public List<User> findAllResultMap();
- 编写映射配置文件UserMapper.xml
<!--id:标签的唯一标识,随便起的
type:封装后的实体类型 user是配好的别名-->
<resultMap id="userResultMap" type="user">
<!--手动配置映射关系-->
<!--id:用来配置主键-->
<id property="id" column="id"></id>
<!--result:对表中普通字段的封装-->
<result property="usernameabc" column="username"></result>
<result property="birthdayabc" column="birthday"></result>
<result property="sexabc" column="sex"></result>
<result property="addressabc" column="address"></result>
</resultMap>
<!--查询所有用户-->
<!--resultMap: 手动配置实体属性与表中字段的映射关系,完成手动封装-->
<select id="findAllResultMap" resultMap="userResultMap">
select * from user
</select>
3.测试一下
@Test
public void test2() throws Exception {
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获得Mapper代理对象 当前返回的是基于UserMapper所产生的代理对象:底层:JDK动态代理 实际类型是:proxy
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 执行查询
List<User> allResultMap = userMapper.findAllResultMap();
for (User user : allResultMap) {
System.out.println(user);
}
sqlSession.close();
}