欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis_ResultMap结果集映射(基础)

程序员文章站 2024-03-03 19:17:22
...

ResultMap结果集映射

解决属性名和字段名不一致的问题,之前是实体类和数据库字段一致的,现在测试不一致的情况

这会涉及到一个mybatis自动映射的问题,和手动映射的方法

  • 数据库字段和实体类名字不同,产生的错误

  • Mybatis_ResultMap结果集映射(基础)

  • @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    @Alias("hello")
    public class User {
        private int id;
        private String name;
        private String password;
    }
    
  • 字段名pwd不同,运行产生的结果也不同,这里顺便玩了下设置别名

  • @Test
    public void Test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User userById = mapper.getUserById(1);
        System.out.println(userById);
        sqlSession.close();
    }
    
  • 运行出来的结果pwd字段没有查询到

  • Mybatis_ResultMap结果集映射(基础)

  • <mapper namespace="com.haoyun.dao.UserMapper">
        <select id="getUserById" parameterType="int" resultType="hello" >
            select * from mybatis.user where id = #{id}
        </select>
    </mapper>
    
  • 最蠢的解决方法就是设置sql语句的别名

  • <select id="getUserById" parameterType="int" resultType="hello" >
        select id,name,pwd  password from mybatis.user where id = #{id}
    </select>
    
  • 当然用的不是这种方法

  • 现在resultType是具体的类型

实现resultMap

  • 结果集映射

  • 将数据库的字段,映射成Java实体类的属性

  • <mapper namespace="com.haoyun.dao.UserMapper">
        <resultMap id="UserMap" type="hello">
            <result column="id" property="id"/>
            <result column="name" property="name"/>
            <result column="pwd" property="password"/>
        </resultMap>
        <select id="getUserById" parameterType="int" resultMap="UserMap" >
             select * from mybatis.user where id = #{id}
    
        </select>
    </mapper>
    
  • 这是比较简单的,要编写比较难的就需要在resultMap进行嵌套

  • 对于简单的语句并不用写resultMap语句,有些是自己已经映射好了的,比如id和id,name和name字段名和属性名都是一样的,只要写不一样的就好

  • <resultMap id="UserMap" type="hello">
        <result column="pwd" property="password"/>
    </resultMap>
    
  • 已经自动将字段名映射到对应的实体类属性上了

  • 如果世界总是这么简单就好了

之后讲一对多和多对一的例子,会更需要resultMap