概述
当表中 字段 与 实体类中的 属性 不完全相同时,查询的结果 无法封装到实体类中
通过下面步骤验证
表增加字段
在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;
}
修改 IUserMapper
查询字段增加 create_time
public interface IUserMapper {
@Select("select id,username,password,age,sex,status,create_time from user")
public List<User> query();
}
完整代码
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;
}
}
测试
@org.junit.Test
public void test() throws IOException {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);
List<User> list=mapper.query();
for(User u:list) {
String info = String.format("id:%s,用户名:%s,创建时间:%s", u.getId(), u.getUsername(),u.getCreateTime());
System.out.println(info);
}
sqlSession.close();
inputStream.close();
}
执行结果如下:
user.getCreateTime()返回null

