Mybatis:ResultMap
Posted 可乐乐乐乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis:ResultMap相关的知识,希望对你有一定的参考价值。
ResultMap:
解决的问题:属性名和字段名不一致。
解决方法:
- sql语句中设置别名
- 使用ResultMap标签定义映射字段
下面着重介绍ResultMap方法:
部分环境设置:
- 数据库字段如下:
- User实体类设置:
public class User { private int id; //id private String name; //姓名 private String password; //密码和数据库不一样! //构造 //set/get //toString() }
- UserMapper.java接口:
//根据id查询用户 User selectUserById(int id);
- Usermapper.xml中select标签:
<select id="selectUserById" resultType="user">
select * from user where id = #{id}
</select>
resultType填写之后要填写的resultType标签的id。
- resultType设置:
<resultMap id="UserMap" type="user"> <!-- id为主键 --> <!--<id column="id" property="id"/> <result column="name" property="name"/>--> <!-- column是数据库表的列名 , property是对应实体类的属性名 --> <result column="pwd" property="password"/> </resultMap>
对于字段名跟实体类中的属性名相同就可不需配置,字段名和属性名不同才需要配置。
测试:
@Test public void test01(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List<User> users = userMapper.selectUser(); logger.info("info:进入了testlog4j方法"); logger.debug("debug:进入了testlog4j方法"); logger.error("error:进入了testlog4j方法"); for (User user : users) { System.out.println(user); } sqlSession.close(); }
ResultMap不单单能解决字段与属性名不一致的问题,也能轻松解决数据库字段映射实体复杂类型的问题,也就是解决数据库一对多,多对一的情况。
如果世界总是这么简单就好了(#^.^#)
以上是关于Mybatis:ResultMap的主要内容,如果未能解决你的问题,请参考以下文章
mybatis---resultmap和resulttype