JavaLite / ActiveJDBC:从Getters派生数据库列?

时间:2018-02-13 07:41:41

标签: java activejdbc javalite

ActiveJDBC是一个真正的"瘦"数据库映射器允许查询数据库并将结果映射到POJO。我使用的是2.1-SNAPSHOT版本。

然而,当涉及到一个类的属性时,看起来人们必须手动完成这项工作(或者我已经监督了一个必不可少的部分)。

实施例: 我们假设有一个具有firstName和lastName的类:

public class Person {
    private String firstName;
    private String lastName;

    public String getFirstName() {
       return this.firstName;
    }

    public void setFirstName(String f) {
       this.firstName = f;
    }

    // same for lastName
}

现在检索数据很简单:

List<Person> persons = Person.findAll();

但是,似乎有必要将属性手动分配给一个类:

for(Person p : persons) {
    System.out.println(p.getLastName()) // ===> null
}

所以问题是: 是否有可能(如果是这样,如何)使用常用的getter和setter访问POJO的属性?或者是否可以注释字段以相应地将它们映射到数据库列(例如first_name,last_name)?

我需要经常访问POJO的某些字段,并且我想使用标准的getter来这样做。 但是,访问Model的get(property)方法非常昂贵(不确定Model.get()是否暗示SELECT语句?)。

现在我结束了像

这样丑陋的事情
String getFirstName() {
  if (this.firstName != null) 
     return this.firstName;

  Object o = get("first_name");
   if (o == null) 
      this.firstName = "";
   else 
      this.firstName = o.toString;

   return  this.firstName;
}

所以...我错过了什么吗?... 感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

很抱歉,您的代码示例与属性不相关,不支持框架功能和文档。此外,POJO是Plain Old Java Object ,与Java Bean不一定相同 ,但您要将两者混为一谈。有关ActiveJDBC属性的更多信息,请参阅Getters and Setters

此外,您可以将ActiveJDBC模型转换为&#34; bean&#34;,但您应该更像地图:

public class Person  extends Model{

    public String getFirstName() {
       return getString("first_name");
    }

    public void setFirstName(String f) {
       set("first_name", f)
    }
}