实体类属性名和数据库字段名不对应的两种解决方法
id | uesrname | birthday | sex | address | |
---|---|---|---|---|---|
42 | 小二王 | 2018-03-02 15:09:37 | 女 | 北京金燕龙 | |
43 | 小二王 | 2018-03-04 11:34:34 | 女 | 北京金燕龙 | |
46 | 老王 | 2018-03-07 17:37:26 | 男 | 北京 | |
48 | 小马宝莉 | 2018-03-08 11:44:00 | 女 | 北京修正 | |
51 | hehehehe | 2020-03-22 09:16:43 | 男 | 中国 |
java实体类:
package com.oylong.domain;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private Integer userId;
private String userName;
private Date userBirthday;
private String userSex;
private String userAddress;
......
}
假如我们按照以下的语句去查询
<select id="findAll" resultType="com.oylong.domain.User">
select * from user
</select>
那么会得到如下结果
解决方式如下
- 第一种,直接修改sql语句
<select id="findAll" resultType="com.oylong.domain.User">
select id as userId,username as userName,birthady as userBirthday, sex as userSex, address as userAddress from user
</select>
修改后得到正确结果
- 第二种,在映射配置文件中,添加对应关系,然后在select标签中,添加resultmap属性值
<resultMap id="userMap" type="com.oylong.domain.User">
<id property="userId" column="id" ></id>
<result property="userName" column="username"></result>
<result property="userAddress" column="address"></result>
<result property="userSex" column="sex"></result>
<result property="userBirthday" column="birthday"></result>
</resultMap>
<select id="findAll" resultMap="userMap">
select * from user
</select>
这样同样可以得到正确结果。两种方法各有利弊,第一种执行效率高,但是需要改很多的sql语句;第二种执行效率低,但是可以提高开发效率。