Mybatis中解決數據庫字段名與實體類屬性名不同的問題

1.問題闡述:

 在Mybatis中,當根據id查詢用戶信息時,映射文件userMapper.xml進行配置查詢時,如果數據庫字段名與實體類屬性名稱不一致,查詢時,會出現爲Null。

t_user表字段:

create table t_user(
   u_id int pramary key not null,
   u_name varchar(20) not null,
   u_pwd varchar(20) not null
)
User.java實體類屬性字段

public class User{
    private int uid;
    private String name;
    private String pwd;
}
2.解決方式:

1)在userMapper.xml中配置sql查詢語句時,給表中的字段起別名,最好字段別名與實體類中屬性名保持一致,如下:

userMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:命名空間,對應dao接口 -->
<mapper namespace="com.casv.entity.userMapper">
	<select id="getuser"  parameterType="int" resultType="users" >
	    select u_id uid,u_name name,u_pwd pwd from t_user where u_id=#{uid};
	</select>
</mapper>

2)在userMapper.xml中配置resultMap屬性,進行表字段與實體類屬性映射,如下:

userMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:命名空間,對應dao接口 -->
<mapper namespace="com.casv.entity.userMapper">
    <!-- 配置resultMap屬性,進行表字段與實體類屬性映射 -->
    <resultMap id="BaseResultMap" type="users" >
       <result column="u_id" property="uid"></result>
       <result column="u_name" property="name"></result>
       <result column="u_pwd" property="pwd"></result>
    </resultMap>
    <!-- select中引入resultMap屬性,通過id將表字段與實體屬性映射加載進來 -->
    <select id="getuser"  resultMap="BaseResultMap" parameterType="int" resultType="users" >
        select * from t_user where u_id=#{sid}
    </select>
</mapper>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章