JDBI(3)是否对bean有不对称支持?

时间:2018-02-08 15:40:26

标签: java sql javabeans jdbi

JDBI(3)非常支持查询bean:

@SqlQuery("SELECT * FROM user ORDER BY name")
@RegisterBeanMapper(User.class)
List<User> listUsers();

并且,假设编译器设置为包含参数名称,它还支持插入bean:

@SqlUpdate("INSERT INTO user(id, name) VALUES (:id, :name)")
void insertBean(@BindBean User user);

但显然,在插入bean时,似乎需要枚举所有bean字段,而对于查询它,JDBI可以自己解决它们。我错过了一个解决方案,或者JDBI真的有不同的查询/插入功能吗?

我认为对于这两个方向,需要有关bean的相同信息,所以我不明白为什么要插入,它无法自己弄清楚这些字段。是否有这种差异的原因,或者我只是没有看到明显的东西?

1 个答案:

答案 0 :(得分:1)

Jdbi旨在作为便利层,使其更容易使用Java中的SQL数据库。

给Jdbi一个SQL语句和一些参数,库会执行它并将结果(如果有的话)填充到某个对象中 - 最后。

生成SQL不是Jdbi的目标,尽管我们通过模板提供了一些小的便利,例如@BindList

project documentation(强调添加):

  

Jdbi不是ORM。没有会话缓存,更改跟踪,“在视图中打开会话”,或者哄骗库以了解您的架构。

     

相反,Jdbi提供了SQL和简单表格数据结构之间的直接映射。

     

你带上自己的SQL ,而Jdbi只运行你告诉它的命令 - 就像上帝的意图。