美文网首页
ResultHandler 返回对象属性都是null

ResultHandler 返回对象属性都是null

作者: 白驹过隙_忽然而已 | 来源:发表于2019-01-08 12:51 被阅读0次

    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();    
      }
    }
    

    返回的结果:

    image

    打断点发现是程序找不到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) {        t
        his.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;    
      }
    }
    

    结果:

    image

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

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

    image

    相关文章

      网友评论

          本文标题:ResultHandler 返回对象属性都是null

          本文链接:https://www.haomeiwen.com/subject/rpcprqtx.html