博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
组合条件查询+分页
阅读量:6333 次
发布时间:2019-06-22

本文共 4543 字,大约阅读时间需要 15 分钟。

查询框效果如下

1.前端代码(有其他的业务代码,请自行略过....):

            
管理分区
查询条件
区(县)
定区编码
关键字
查询

主要步骤是:(1)给查询按钮添加点击事件;(2).将表单序列化成json对象,指定组合条件分页查询action的url;

将表单序列化成json对象代码:

//将表单序列化为json对象            $.fn.serializeJson=function(){                  var serializeObj={};                  var array=this.serializeArray();                  var str=this.serialize();                  $(array).each(function(){                      if(serializeObj[this.name]){                          if($.isArray(serializeObj[this.name])){                              serializeObj[this.name].push(this.value);                          }else{                              serializeObj[this.name]=[serializeObj[this.name],this.value];                          }                      }else{                          serializeObj[this.name]=this.value;                       }                  });                  return serializeObj;              };

 

2.后台代码

action

@Controller@Scope("prototype")public class SubAreaAction extends BaseAction
{ // 注入service @Autowired private SubAreaService subAreaService; /** * 组合条件+分页查询的方法 */ @Action("subarea_listPage") public String listPage() { //创建分页对象 Pageable pageable = new PageRequest(page - 1, rows); Specification
spec = new Specification
() { @Override public Predicate toPredicate(Root
root, CriteriaQuery
query, CriteriaBuilder cb) { List
andPredicate = new ArrayList
(); List
orPredicate = new ArrayList
(); //先判断区域是否存在 if(model.getArea() != null ) { Join
areaJoin = root.join("area"); //判断省是否为空 if (StringUtils.isNotBlank(model.getArea().getProvince())) { Predicate p = cb.like(areaJoin.get("province").as(String.class),"%"+model.getArea().getProvince()+"%" ); andPredicate.add(p); } if(StringUtils.isNotBlank(model.getArea().getCity())) { Predicate p = cb.like(areaJoin.get("city").as(String.class), "%"+model.getArea().getCity()+"%"); andPredicate.add(p); } if( StringUtils.isNotBlank(model.getArea().getDistrict())) { Predicate p = cb.like(areaJoin.get("district").as(String.class), "%"+model.getArea()+"%"); andPredicate.add(p); } } if(model.getFixedArea() != null ) { Join
fixedAreaJoin = root.join("fixedArea"); if(StringUtils.isNotBlank(model.getFixedArea().getId())) { Predicate p = cb.like(fixedAreaJoin.get("id").as(String.class),"%"+model.getFixedArea()+"%" ); andPredicate.add(p); } } if(StringUtils.isNotBlank(model.getKeyWords())) { Predicate p = cb.like(root.get("keyWords").as(String.class), "%"+model.getKeyWords()+"%"); andPredicate.add(p); } Predicate[] array = andPredicate.toArray(new Predicate[0]); Predicate predicate = cb.and(array); return predicate; } }; //响应 Page
pageResponse = subAreaService.listPage(spec, pageable); /* //创建map用于存放结果集 Map
resultMap = new HashMap
(); resultMap.put("total", pageResponse.getTotalElements()); resultMap.put("rows", pageResponse.getContent()); //将结果进行压入栈顶 ActionContext.getContext().getValueStack().push(resultMap);*/ pushPageDataToValustackRoot(pageResponse); return JSON; }

service:

public interface SubAreaService {    Page
listPage(Specification
spec, Pageable pageable);}

serviceImpl:

@Service@Transactionalpublic class SubAreaServiceImpl implements SubAreaService {  //注入dao    @Autowired    private SubAreaRepository subAreaRepository;/**     * 分页查询的方法     */    @Override    public Page
listPage(Specification
spec,Pageable pageable) { return subAreaRepository.findAll(spec, pageable); } }

dao层:

public interface SubAreaRepository extends JpaRepository
,JpaSpecificationExecutor
{ }

 

转载于:https://www.cnblogs.com/peng611/p/8977827.html

你可能感兴趣的文章
jQuery Autocomplete ajax自动补全功能 下拉框提示
查看>>
NSDictionary 循环
查看>>
如何用java制作验证码
查看>>
nginx过多参数rewrite配置方法
查看>>
堆栈的区别及增长方向
查看>>
How to find out who is locking a table in MySQL
查看>>
unrar.jar解压缩rar文件
查看>>
植物创建与种植插件大全
查看>>
android 事件传递机制
查看>>
DOS 批处理与 MakeFile 结合
查看>>
最佳敬业奖应该颁给乞丐
查看>>
linux android sdk jdk环境
查看>>
选择相册、拍照,图片过大导致控件无法显示图片
查看>>
IOS9 发布遇到的问题
查看>>
js播放wav格式的录音文件
查看>>
一些经验
查看>>
HttpClient使用详解
查看>>
Qt中使用QToolBox实现抽屉效果
查看>>
samba来源于网络
查看>>
Page Photos Demo
查看>>