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>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Sql Server 表名、表字段与关键字冲突
- 下一篇: Mybatis resultMap支持继承