有人可以解释一种使用Apache DbUtils获取一对多关联和父子类型关联的方法吗?我试过搜索,但找不到一对多关联的例子? DbUtils页面上的文档也没有显示这种情况的例子吗?
E.g。
class Category {
String code;
List<Product> products;
List<Category> subCategories;
}
假设我categories
表的父子关系有parent_category
列,products
表和仅包含category_code和product_code的关联表category_products
表。假设我的查询有效,并希望一次性获取所有子类别和产品的类别。这可能与DbUtils有关吗?我有很多这样的情况,那么是否有一种通用的,更简洁的方式,或者我们必须在每种情况下编写大量的自定义代码?即便如此,你能告诉我一个例子吗?
谢谢,
稻谷
答案 0 :(得分:2)
DbUtils具有一些proto Sql映射功能。
使用BeanHandler和BeanListHandler,您可以映射查询在传递给处理程序的类的实例上返回的行。
映射很容易实现,逻辑可以封装在传递给处理程序的类中。课程必须如下:
如果您的域模型设计为对象组合,但您希望优化查询执行(1:n或m:n),则可以按以下步骤操作:
- 创建一个JavaBean,它映射从查询返回的所有列,比如CategoryRelational
- 使用类似List<Category> mapCategory(List<CategoryRelational>)
的方法创建数据映射器对象,该方法接收平面对象的集合并返回分层对象的集合
映射的逻辑很简单,但显然与查询相关:
我在一个大项目中使用过这种方法,并且当数据库频繁更改时,我发现它非常灵活。