mybatis注解开发-表字段名与类属性名不完全相同,无法将查询结果全部封装进类对象

概述

当表中 字段 与 实体类中的 属性 不完全相同时,查询的结果 无法封装到实体类中

通过下面步骤验证

表增加字段

在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


原文出处:/show_1IXdiAOAqB.html