解决xUtils3 org.xutils.ex.DbException: []问题

这个问题遇到不止一次了,但是每次遇到又忘记了,因为这个提示不明不白的也没说明是什么原因造成的,所以每次都又折腾老半天,这里记录下,以防下次又遇到

原来报错的代码如下

try {
    List students = mDbManager.selector(Order.class).findAll();
} catch (DbException e) {
    e.printStackTrace();
}
@Table(name="student")
private class Student {
    @Column(name = "id", isId = true)
    public int id;
    @Column(name = "name")
    public String name;
    @Column(name = "age")
    public int age;
    
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

报错的原因是Student没有一个public的空构造方法导致的,因为xUtils3框架是利用反射通过空构造方法来生成对象的,而如果没有空构造函数,或者构造函数不为public则无法通过反射生成对象,就会报错

所以数据库bean类的正确写法如下所示,不管空构造函数是否用到,保留着是个好习惯

@Table(name="student")
private class Student {
    @Column(name = "id", isId = true)
    public int id;
    @Column(name = "name")
    public String name;
    @Column(name = "age")
    public int age;

    public Student() {
        
    }
    
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

 

 

你可能感兴趣的:(xUtils3)