Mybatis中的model實體與資料庫中的欄位不一致的解決方案
阿新 • • 發佈:2019-02-14
mybatis的強大之處一:resultMap
場景:
model:
package com.lgy.model; public class User { private Integer userId; private String username; private Integer age; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
資料庫語句:
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
Mappers片段:
<select id="findOneById" parameterType="java.lang.Integer" resultType="user"> select * from user where user_id = #{id} </select>
發現返回的id是無值得。2中解決方案:
1.配置resultMap,resultMap會根據property和column進行隱射:
<resultMap type="com.lgy.model.User" id="userResultMap"> <id column="user_id" property="userId" /> <result column="username" property="username" /> <result column="age" property="age" /> </resultMap>
返回值改為resultMap即可
2.書寫sql語句寫成別名
<select id="findOneById" parameterType="java.lang.Integer" resultType="user">
select user_id as userId,username,age from user where user_id = #{id}
</select>