我是靠谱客的博主 单薄口红,最近开发中收集的这篇文章主要介绍mybatis-plus 前端传来参数 进行封装 QueryWrapper自定义查询条件的实现总结,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
对于解决前端封装查询条件进行查询,如果是查询条件过多的话,那么该如何解决?
下面是一个解决方案,供大家学习。目地是针对需求而想出解决办法。
mybatis-plus里有个类QueryWrapper,封装sql对象,包括where条件,order by排序,select哪些字段等。大家可以去mybatis-plus 官网上看看。
一、前端
jsp页面
<form id="myform" name="myform"> <input name="name"/> <input name="age"/> <input name="lxdh"/> <input name="dz"/> </form>
jquery发起post请求,拼接的参数如下:
var searchParam = [ {column: "COLUMN_NAME",type: "like", value: "tim"}, {column: "COLUMN_AGE",type: "eq", value: "22"}, {column: "COLUMN_DATE",type: "ge", value: "2020-12-16 00:00:00"}, {column: "COLUMN_DATE",type: "le", value: "2020-12-16 23:59:59"} ];
jquery发起post请求:
$.ajax({ url: "/pagelist", type: "post", data: {pageNum:1,pageSize:20,condition:JSON.stringify(searchParam) success: function(result){ //对返回的数据进行处理。该处省略了。 } });
二、后端
Controller
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @RequestMapping(value = "/pagelist", method = RequestMethod.POST) public Object getTestList(@RequestParam(name = "pageNum", required = false, defaultValue = "1") int pageNum, @RequestParam(name = "pageSize", required = false, defaultValue = "15") int pageSize, @RequestParam(name = "condition",required = false) String conditionJson) { QueryWrapper queryWrapper = SearchUtil.parseWhereSql(conditionJson); queryWrapper.orderByDesc("CREATE_DATE"); return usermapper.getPageTestList(queryWrapper,pageNum,pageSize); }
SearchUtil:
public static QueryWrapper parseWhereSql(String conditionJson){ QueryWrapper queryWrapper = new QueryWrapper(); if(StrUtil.isNotEmpty(conditionJson)){ List<ConditionVo> conditionList = JSON.parseArray(conditionJson,ConditionVo.class); if(CollUtil.isNotEmpty(conditionList)){ for(ConditionVo conditionVo : conditionList){ switch (conditionVo.getType()){ case "eq": queryWrapper.eq(conditionVo.getColumn(),conditionVo.getValue());break; case "ne": queryWrapper.ne(conditionVo.getColumn(),conditionVo.getValue());break; case "like": queryWrapper.like(conditionVo.getColumn(),conditionVo.getValue());break; case "leftlike": queryWrapper.likeLeft(conditionVo.getColumn(),conditionVo.getValue());break; case "rightlike": queryWrapper.likeRight(conditionVo.getColumn(),conditionVo.getValue());break; case "notlike": queryWrapper.notLike(conditionVo.getColumn(),conditionVo.getValue());break; case "gt": queryWrapper.gt(conditionVo.getColumn(),conditionVo.getValue());break; case "lt": queryWrapper.lt(conditionVo.getColumn(),conditionVo.getValue());break; case "ge": queryWrapper.ge(conditionVo.getColumn(),conditionVo.getValue());break; case "le": queryWrapper.le(conditionVo.getColumn(),conditionVo.getValue());break; } } } } return queryWrapper; }
该类是重点,根据type不同的值进行组合,queryWrapper包含了很多拼接方法,可以看文档。这里只写了一些常用的拼接方法。
ConditionVo:
@Data public class ConditionVo implements Serializable { private static final long serialVersionUID = -5099378457111419832L; /** * 数据库字段名 */ private String column; /** * 字段值 */ private String value; /** * 连接类型,如llike,equals,gt,ge,lt,le */ private String type; }
其实重点是要拿到queryWrapper对象,之后就是Mybatis-plus 的sql操作了,然后返回数据进行显示。
总结
通过上面这种封装方式,就不需要在xml里面做一大堆的where条件if判断来拼接sql。
mybatis-plus框架功能很强大,且还在维护中,有空可以仔细阅读下文档、官方例子,能力强的可以直接看源码,一切答案都在源码中。
最后
以上就是单薄口红为你收集整理的mybatis-plus 前端传来参数 进行封装 QueryWrapper自定义查询条件的实现总结的全部内容,希望文章能够帮你解决mybatis-plus 前端传来参数 进行封装 QueryWrapper自定义查询条件的实现总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复