牛骨文教育服务平台(让学习变的简单)
博文笔记

Mybatis中解决数据库字段名与实体类属性名不同的问题

创建时间:2016-12-03 投稿人: 浏览次数:3887

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>

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。