码迷,mamicode.com
首页 > 数据库 > 详细

关于mybatis中的实体类属性与数据库中的列名不一致的两种解决方法

时间:2020-02-21 23:57:49      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:info   erb   bat   --   div   主键   The   birt   解决方法   

1.我们都知道,在mybatis中写实体类的时候,是按照数据库中的列名来给实体类定义属性的,举个例子:

public class User implements Serializable {
    private Integer id;
    private String username;
    private String address;
    private String sex;
    private Date birthday;
}

技术图片

 

 2.但是,如果我们在定义实体类的时候,实体类中的属性与数据库列名不一致呢?比如:

public class User implements Serializable {
    private Integer userId;
    private String userName;
    private String userAddress;
    private String userSex;
    private Date userBirthday;
}

3.这个时候就有两种解决办法:

方法一:在sql语句中给数据库中的字段起别名:

 <select id="findAll" resultType="com.itheima.domain.User">
        select id as userId, username as userName,birthday as userBirthday,sex as userSex,address as userAddress from user ;
    </select>

这样就能够把查询到的数据与实体类的属性对应起来,并封装回User类的对象了,缺点是每次都要起别名,消耗精力,优点是执行效率高。

方法二:给实体类和数据库建立对应关系:

    <resultMap id="userMap" type="com.itheima.domain.User">
<!--        主键字段的对应-->
        <id property="userId" column="id"></id>
<!--        非主键字段的对应-->
        <result property="userName" column="username"></result>
        <result property="userSex" column="sex"></result>
        <result property="userBirthday" column="birthday"></result>
        <result property="userAddress" column="address"></result>
    </resultMap>

然后在sql语句中将resultType设置为"userMap"即可;

 <!--    查询所有-->
    <select id="findAll" resultType="userMap">
        select * from user ;
    </select>

这种方法写起来代码量少,但是因为添加了resultMap对应这一环节,执行效率不高。

关于mybatis中的实体类属性与数据库中的列名不一致的两种解决方法

标签:info   erb   bat   --   div   主键   The   birt   解决方法   

原文地址:https://www.cnblogs.com/iceywu/p/12343648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!