问题描述
当表中 字段 与 实体类中的 属性 不完全相同时,查询的结果 无法封装到实体类中
通过下面步骤验证
案例
在user表中增加create_time字段,DATETIME类型,表示插入该条记录的时间
修改表结构sql
ALTER TABLE `user`
ADD COLUMN `create_time` DATETIME NULL DEFAULT NULL;
修改成功后,将 create_time 字段加上值
结果如下:
实体类增加属性
在User类中增加createTime属性(java中使用驼峰命名方式,所以不能有_),并增加setter、getter方法
如下:
private Date createTime;
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
完整代码
package top.malaoshi.entity;
import java.util.Date;
public class User {
private String id;
private String username;
private String password;
private Integer age;
private String sex;
private String status;
private Date createTime;
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
修改 userMapper.xml
将下面代码:
<select id="selectAll" resultType="org.malaoshi.entity.User">
select id,username,password from user
</select>
修改成:
<select id="selectAll" resultType="org.malaoshi.entity.User">
select id,username,password,age,sex,status,create_time from user
</select>
增加create_time字段
执行
@Test
public void test() throws IOException {
/*
1. 读取 mybatis-config.xml 自定义命名的全局配置文件.
getResourceAsStream 使用的资源路径
*/
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 2. 使用sqlSession的工厂构造器来读入全局配置,再生成一个sqlSession工厂.
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//
// // 3. 通过 sqlSession 工厂打开一个 sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// //4 使用SqlSession创建Dao接口的代理对象
IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);
List<User> list=mapper.selectAll();
for(User user:list){
System.out.println(user.getUsername()+"--"+user.getCreateTime());
}
}finally{
sqlSession.close();
inputStream.close();
}
}
执行结果如下:
user.getCreateTime()返回null

