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
- )
- public class User{
- private int uid;
- private String name;
- private String pwd;
- }
1)在userMapper.xml中配置sql查询语句时,给表中的字段起别名,最好字段别名与实体类中属性名保持一致,如下:
userMapper.xml:
<注:!-- 编写SQL语句 id是一个方法,id是唯一的 parameterType(输入类型)、resultType(输出类型) -->
- <?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:
<注:!-- 配置resultMap属性,实现表字段和实体类属性的映射
type:实体类的位置 -->
- <?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>
来源:oschina
链接:https://my.oschina.net/u/4352770/blog/4242357