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的相同信息,所以我不明白为什么要插入,它无法自行找出字段。造成这种差异的原因是什么,还是我只是没有看到明显的东西?

最佳答案

Jdbi旨在作为一个方便层,使使用Java中的SQL数据库更加容易。

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

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

project documentation中(添加了重点):


  Jdbi不是一个ORM。没有会话缓存,更改跟踪,“在视图中打开会话”,也没有使库协调来理解您的架构。
  
  相反,Jdbi提供了SQL与简单表格数据结构之间的直接映射。
  
  您带来了自己的SQL,而Jdbi仅运行您告诉它的命令-神的意图。

关于java - JDBI(3)是否对bean具有非对称支持?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48689310/

10-10 19:34