若依系统之搜索框

最近由于项目需求,使用开源开发平台-------若依。

将一些遇到的问题,解决下并且记录。

废话少说,直接上最近接触的问题-------数据筛选呈现

问题描述:

       刚刚接触这个项目的时候,第一要了解的任务就是要对页面数据的增删查改了(这个过程相当简单也就不再详细描述了)。值得注意的是在xml配置时候用了大量的动态mybait语句来控制。如下图,别小看他们,他们在数据条件筛选查询,Id关联查询有妙用。

若依系统之搜索框_第1张图片

一.条件查询的实现(从前到后)

像这样的表格页面(班级)

若依系统之搜索框_第2张图片

 当我使用条件查询时,是会进行若依封装好的js来提交,

 追溯下去,每行的都有注释

 若依系统之搜索框_第3张图片

 我们来看看执行搜索后的浏览器控制台情况

若依系统之搜索框_第4张图片

 

 重点是这个,对比上面我的代码输出位置就可知道,每次搜索带的数据都会被放进一个search[]数组中,然后return给param。

若依系统之搜索框_第5张图片

   带着其中的一个字段classname:22班,直奔xml文件中找到对应位置。动态mybaits的classname看到字段不为空,就会产生where筛选条件,最后重新刷新页面,就返回经过筛选过的数据了。

 

二.关联id查询的实现

  博主在今天之前只是知道动态mybaits用来条件查询而已,所以一直感觉平平。知道今天遇到一个需求:需要用到id的关联查询,搞了很久才明白原来也是用到这个原理,顿时感觉到这个很妙用。

   以若依系统的字典为例

  关系:一个字典类型可以有多个字典值,例如一个性别字典类型,有男与女两个字典值。

  先看实现的效果:

   若依系统之搜索框_第6张图片

 点击字典类型后就可以查看字典值了

若依系统之搜索框_第7张图片

 

 我们来跟踪实现过程

 首先,在type.html页面要明确触发页面跳转函数是detail(),这个很好找

 

 

  跳转到一个SysDictTypeController

若依系统之搜索框_第8张图片

 然后再跳到一个data.html页面,而且会在加载表格的时候会访问List方法。

若依系统之搜索框_第9张图片

 再看SysDictDataController的List方法,完成了整个流程

若依系统之搜索框_第10张图片

 

 ?????WTF?看得我相当迷,既然我点击了detail()函数时带了id进去,为什么传着传着id就没了?而且他在detail方法里根据id查了type类型的当前id对应的对象,与查了所有的type类型的List,我的最终目标是根据当前id查找对应的字典值啊,看起来一点关联都没有。。。

后来我想不明白,照着例子实操了一遍,还是不行。弄了很久发现我漏了一个很关键的东西。

若依系统之搜索框_第11张图片

 data.html页面结尾的queryParams方法,这个queryParams方法是bootsrap自带的查询方法,一般默认是用来传分页等参数信息

 再追踪这个dictType值

 一个下拉框,而且是通过SysDictTypeController的modleMap传过来的。

 这下子恍然大悟了,若依的关联ID查询其实不是直接传Id的,而是通过modleMap传到他们的条件搜索域里面,表单List再根据自己页面的搜索条件返回list。这样的好处是维护controller一些常用方法(如List方法)的简洁性和可读性。

如同上面,把所有的字典类型查到,传到data.html做下拉框,th:text用于显示,th:value用于存入数据库的值,th:field为这个下拉框的默认值,所以data.html一开始加载的时候就是带有相应id条件的查询了。

 

 总结

 其实两个问题都属于一个问题,我在了解第一个问题基本原理情况下还是花了比较长的时间去解决第二个问题,这个是相当低效率的,尤其是在真正的开发生产环境中。这可能是平时在了解学习的习惯上:少对知识点总结与深层的思考,以后有空都会把平时的问题记录下,总结下。

 

 

 

 

 

 

 

你可能感兴趣的:(开发)