暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MyBatis-Provider项目实战

长夜难眠 2020-07-12
415

点击蓝字

关注不迷途


背景


在项目中如何完成动态SQL的生成,根据Mybatis官方文档可知,使用Provider允许构建动态SQL,调用相应的类的方法可以在运行时返回相应的SQL。


也就是SQL是根据运行时传入的参数所决定的,这正时MyBatis的优点之一。


分析


在使用Provider构建之前,先分析项目中的数据关系。


其中一个业务场景为:需要返回类型列表以及每个类型里面对应的加料列表以及商品列表。


所涉及的数据库表有:type、charge、type_charge、product、heat、sugar、product_heat、product_sugar、rank。


type:类型表。



charge:加料表。


type_charge:类型表与加料表的中间表,存储着两表的关系。


product:商品表。


heat:热量表。


product_heat:商品表与热量表的中间表。


sugar:糖量表。


product_sugar:商品表与糖量表的中间表。


rank:规格表。


需要的数据结果为:




因此查询type后需要一对多查询charge、product,查product需要一对多查询sugar、heat。所以需要嵌套地进行一对多查询。



行动


第一步,构建数据结构以接收复杂类型。




第二步,编写TypeMapper,TypeProvider。




第三步,编写ProductMapper,ProductProvider。




第四步,编写HeatMapper,HeatProvider。




第五步,编写SugarMapper,SugarProvider。




思考


需要注意的是@Results(),只需要标注一对多的@Result(),其它@Result()可以自动转换的。



喜欢本篇内容顺便点个在看吧


文章转载自长夜难眠,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论