mybatis查询及实体类映射

为了做查询,做了一个pojo为UserDemo,且继承了User类。

public class UserDemo extends User{
        private String loginName;
        private String password;
        private Date updatetime;
}

User类里多了一些字段,例如createtime、createtime等。

public class User implements Serializable {
        @Id
        private Integer id;
        private String loginName;
        private String userName;
        private String password;
        private String email;
        private String address;
        private String platform;
        private Date createtime;
}

Mapper接口定义为:

UserDemo findOneByLoginNameAndPassword(String loginName, String password);

xml中的查询如下:

<select id="findOneByLoginNameAndPassword" resultType="com.demojava.entity.UserDemo" parameterType="String">
            select login_name,password,createtime,updatetime,platform from user where login_name = #{loginName} and  password = #{password}
</select>

业务代码为:

UserDemo userDemo = userMapper.findOneByLoginNameAndPassword(loginName,password);
logger.info("校验loginName和password得到的userDemo信息:" + userDemo);

此时的打印为:

校验loginName和password得到的userDemo信息:UserDemo(loginName=xunlian, password=123456, updatetime=Thu May 16 15:30:43 CST 2019)

当我在业务代码中打印其他信息时:

String platForm = userDemo.getPlatform();
Date createtime = userDemo.getCreatetime();
Date updatetime = userDemo.getUpdatetime();
logger.info("platForm:{},createtime:{},updatetime:{}",platForm,createtime,updatetime);

神奇的是,控制台中居然有对应的输出:

platForm:dev,createtime:Thu May 16 15:31:02 CST 2019,updatetime:Thu May 16 15:30:43 CST 2019

而且,方法最后返回了userDemo,居然把UserDemo加User里所有的属性都包含了,而且都有值。 这是为什么?sql里我只查了几个字段呀。

经验分享 程序员 微信小程序 职场和发展