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();
    }
test

 

ResultMap不单单能解决字段与属性名不一致的问题,也能轻松解决数据库字段映射实体复杂类型的问题,也就是解决数据库一对多,多对一的情况。

如果世界总是这么简单就好了(#^.^#)

 

 

 

 

 

 

 

 

 

以上是关于Mybatis:ResultMap的主要内容,如果未能解决你的问题,请参考以下文章

mybatis---resultmap和resulttype

Mybatis ResultMap复合映射使用以及源码分析

Mybatis ResultMap 和 resultType 区别

Mybatis:ResultMap

MyBatis -resultMap 的使用

Mybatis:resultMap的使用总结