Mybatis之解决属性名和字段名不一致的问题

Mybatis

5、解决属性名和字段名不一致的问题

5.1、问题提出

  • 数据库中的字段。

    • user表     id  name   pwd
      
  • 新建一个项目,拷贝之前的,测试实体类字段不一致的情况。

    • //实体类
      public class User {
          private int id;
          private String name;
          private String password;//不一致
          ......
      }
      
    • 测试出现问题

      • User{id=2, name='6', password='null'} 
        
      • //select * from user where id= #{id};
        //类型处理器
        //select id,name,pwd from user where id= #{id};
        
  • 解决方法:

    • 起别名

      • <select id="getUserById" resultType="User" parameterType="int">
                select id,name,pwd as password from user where id= #{id};
        </select>
        

5.2、resultMap

  • 结果集映射

    • id     name    pwd
      id     name    password
      
    • <!--结果集映射-->
          <resultMap id="UserMap" type="User">
              <!--coLumn数据库中的字段,property实体类中的属性-->
              <result column="id" property="id"></result>
              <result column="name" property="name"></result>
              <result column="pwd" property="password"></result>
          </resultMap>
          <select id="getUserById" resultMap="UserMap">
              select * from user where id= #{id};
          </select>
      
  • resultMap 元素是MyBatis中最重要最强大的元素。

  • ResultMap的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。

  • ResultMap 最优秀的地方在于,虽然你已经对它相当了解了,但是根本就不需要显式地用到他们。

posted @ 2021-11-24 00:16  JCooling  阅读(69)  评论(0)    收藏  举报