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的相同信息,所以我不明白为什么要插入,它无法自己弄清楚这些字段。是否有这种差异的原因,或者我只是没有看到明显的东西?
答案 0 :(得分:1)
Jdbi旨在作为便利层,使其更容易使用Java中的SQL数据库。
给Jdbi一个SQL语句和一些参数,库会执行它并将结果(如果有的话)填充到某个对象中 - 最后。
生成SQL不是Jdbi的目标,尽管我们通过模板提供了一些小的便利,例如@BindList
。
从project documentation(强调添加):
Jdbi不是ORM。没有会话缓存,更改跟踪,“在视图中打开会话”,或者哄骗库以了解您的架构。
相反,Jdbi提供了SQL和简单表格数据结构之间的直接映射。
你带上自己的SQL ,而Jdbi只运行你告诉它的命令 - 就像上帝的意图。