1. 程式人生 > >Mybatis中的model實體與資料庫中的欄位不一致的解決方案

Mybatis中的model實體與資料庫中的欄位不一致的解決方案

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>