zoukankan      html  css  js  c++  java
  • 在属性名和列名不一致的情况下,mybatis中可以怎么处理

    在java中,在我们写一个java文件定义用户的属性时,有可能会出现用户定义的属性名和实际的列名不一致的问题,这时候,当我们操作一些数据的时候,就会出现一些错误,例如:当我们测试查询数据时,并不会报错,但是就是数据为空,而且数据库中也是有数据的,但就是查询出来为null;项目很大,数据很多时,我们显然不能通过再修改属性名来修改错误了,我们有另外三种方式取解决这个问题;

      private Integer id;
        //模拟属性名与列名不一致的情况下;
        private String studentName;
        private Integer classid;
        private Integer version;

    实际的列名:name属性名被改为studentName了;

    当我们测试查询数据时,并不会报错,但是就是数据为空,而且数据库中也是有数据的,但就是查询出来null;

    下面,有三种方式解决这个问题;

    ①重写属性名和列名不一致的属性的set方法;

     public void setName(String name) {
            this.studentName = name;
        }

    测试结果:

    ②在mapper配置文件中,给name取别名,以适配器student类中的studentName属性,这种方法比较常见,也比较实用;

    测试结果:

    ③ 通过<resultMap>来映射字段名和实体类属性名的一一对应的关系;

    <!--定义结果集映射,通过该映射来指定表的列与类的属性的映射关系-->
    <!--id:唯一表示; type:关联到实体类-->
        <resultMap id="studentResultMap" type="Student2">
            <!--id:配置主键与实体类中属性的映射关系-->
            <id column="ID" property="id" jdbcType="DECIMAL"></id>
            <!--result:配置非主键列-->
            <result column="name" property="studentName"></result>
            <result column="classid" property="classid"></result>
            <result column="version" property="version"></result>
        </resultMap>
        <!--resultMap:指定返回的结果集映射的ID值-->
        <select id="selectByIdMappingWithResultMap" resultMap="studentResultMap">
            select * from h_student where id=#{id}
        </select>
  • 相关阅读:
    使用Emacs:生存篇
    编程之美:平面最近点对
    SOA体系结构之基础培训教程-大纲篇
    DNS:域名系统
    IIS7中 ASP.NET授权功能如何实现对静态文件的控制
    JVM内存管理学习总结(一)
    FMX中实现PostMessage的方法
    ddd
    4部门明确软件IC产业企业所得税优惠政策
    不要过分相信虚拟机,特别是网络连接方面
  • 原文地址:https://www.cnblogs.com/xie-qi/p/12901027.html
Copyright © 2011-2022 走看看