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

1.问题阐述:

 在Mybatis中,当根据id查询用户信息时,映射文件userMapper.xml进行配置查询时,如果数据库字段名与实体类属性名称不一致,查询时,会出现为Null。

t_user表字段:

[java] view plain copy
  1. create table t_user(  
  2.    u_id int pramary key not null,  
  3.    u_name varchar(20) not null,  
  4.    u_pwd varchar(20) not null  
  5. )  
User.java实体类属性字段

[java] view plain copy
  1. public class User{  
  2.     private int uid;  
  3.     private String name;  
  4.     private String pwd;  
  5. }  
2.解决方式:

1)在userMapper.xml中配置sql查询语句时,给表中的字段起别名,最好字段别名与实体类中属性名保持一致,如下:

userMapper.xml:

<注:!-- 编写SQL语句 id是一个方法,id是唯一的  parameterType(输入类型)、resultType(输出类型) -->

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  3. <!-- namespace:命名空间,对应dao接口 -->  
  4. <mapper namespace="com.casv.entity.userMapper">  
  5.     <select id="getuser"  parameterType="int" resultType="users" >  
  6.         select u_id uid,u_name name,u_pwd pwd from t_user where u_id=#{uid};  
  7.     </select>  
  8. </mapper>  

2)在userMapper.xml中配置resultMap属性,进行表字段与实体类属性映射,如下:

userMapper.xml:

    <注:!-- 配置resultMap属性,实现表字段和实体类属性的映射 type:实体类的位置 -->

[java] view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  3. <!-- namespace:命名空间,对应dao接口 -->  
  4. <mapper namespace="com.casv.entity.userMapper">  
  5.     <!-- 配置resultMap属性,进行表字段与实体类属性映射 -->  
  6.     <resultMap id="BaseResultMap" type="users" >  
  7.        <result column="u_id" property="uid"></result>  
  8.        <result column="u_name" property="name"></result>  
  9.        <result column="u_pwd" property="pwd"></result>  
  10.     </resultMap>  
  11.     <!-- select中引入resultMap属性,通过id将表字段与实体属性映射加载进来 -->  
  12.     <select id="getuser"  resultMap="BaseResultMap" parameterType="int" resultType="users" >  
  13.         select * from t_user where u_id=#{sid}  
  14.     </select>  
  15. </mapper>  


原文地址:https://www.cnblogs.com/Alan0218/p/8471545.html