如何实现Springboot+mybaitis动态查询与关联查询?
之前总结过mybaitis的关联查询与mybaitis动态查询,今天正好项目中有同时用到这两种查询,通过这个需求,总结一下,希望可以帮助到大家
1、 大致的需求如下:
(1)如图所示实现搜索功能,其中可以按照项目分类 或 项目预算 或 发布时间 或 项目的名称进行搜索功能
(2)其中如上图所示画红框的部分,项目预算需要通过字典表进行查找,如下字典表:
2、 实现步骤如下:
(1)Controller中:
在controller中调用service中的业务方法。
(2)service中:
在service中判断前端是否传过来要搜素的条件,如果没传就为查询全部,反之按条件查询。
注:其中的分页功能就不多做介绍,会单独的进行总结。
(2)mapper中:
(2)mapper.xml中:
动态查询以及关联查询最重要的就是写mapper中的sql语句,如图所示为该需求的sql语句。
l 如下图1中mapper中传过来的为map类型,注释需要对这个map中的数据进行操作。
l 如下图2中就是关联查询,它是必要的条件,所以不加入动态查询,它的查询条件为项目预算和项目发布的状态。
l 如下图3中为mapper中传过来map中的一个数组,通过技能标签数组进行查询,此时需要遍历该数组,用foeach的方式遍历。
l 如下图4中为通过时间短进行查询,该方法已在之前总结过的时间段查询中总结过,可以查看之前总结的。
l 如下图5中通过项目创建时间进行排序。
3、 总结:
对于复杂的sql查询,会觉得手忙脚乱,静下心来分析清楚,分步骤做,会觉得迎刃而解。