ResultHandler 返回对象属性都是null

Javabean,使用@Data注解

@Data
@Accessors(chain=true)
@NoArgsConstructor
public class Admin implements Serializable{
   private static final long serialVersionUID = 1L;

   private Integer id;

    private String name;

    private String roles;

    private String password;
    
    private String token;

    public Admin(Integer id, String name, String roles, String password, String token) {
        this.id = id;
        this.name = name;
        this.roles = roles;
        this.password = password;
        this.token = token;
    }

    public Admin initToken() {
        this.token = JWTUtil.createJWT(this.name, this.password);
        return this;
      }

      public Admin encodePsd(){
        this.password= PsdEncodes.entryptPassword(this.password);
        return this;
      }

ResultsetHandler测试:

/**
 * BeanListHandler:将数据结果集的每一行数据,封装成JavaBean对象,多个JavaBean对象封装到List集合中
 * @param conn
 * @param sql
 */
public static void beanListhandler(Connection conn,String sql){
    try {
        Object o = qr.query(conn, sql, new BeanListHandler<Admin>(Admin.class));
        ArrayList<Admin> admins = (ArrayList<Admin>) o;
        admins.stream().map(x -> x.toString()).forEach(System.out::print);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

返回的结果:


打断点发现是程序找不到Admin的setter方法,于是在实体类中补上setter:

//@Data
@Accessors(chain=true)
@NoArgsConstructor
public class Admin implements Serializable{
   private static final long serialVersionUID = 1L;

   private Integer id;

    private String name;

    private String roles;

    private String password;
    
    private String token;

    public Admin(Integer id, String name, String roles, String password, String token) {
        this.id = id;
        this.name = name;
        this.roles = roles;
        this.password = password;
        this.token = token;
    }

    public Admin initToken() {
        this.token = JWTUtil.createJWT(this.name, this.password);
        return this;
      }

      public Admin encodePsd(){
        this.password= PsdEncodes.entryptPassword(this.password);
        return this;
      }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setRoles(String roles) {
        this.roles = roles;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

结果:


Resulthander获取不到@data注解的setter,不知道为什么,记录下。

也可以手动实现handle方法,这个是各种resulthandler的核心:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值