当前位置: 首页 > news >正文

建设网站广州/手机关键词seo排名优化

建设网站广州,手机关键词seo排名优化,给私人企业做网站推广,哪个网站的图片可以做素材在使用srpingboot2.xmybatis-plus框架是遇到特殊需求时研究mybatis-plus的条件构造器动态拼接sql查询,这个查询接口涉及到了自定义sql,动态拼接sql,分页,求和,分组,排序。可以直接看业务实现方法首先说一下…

在使用srpingboot2.x+mybatis-plus框架是遇到特殊需求时研究mybatis-plus的条件构造器动态拼接sql查询,这个查询接口涉及到了自定义sql,动态拼接sql,分页,求和,分组,排序。

可以直接看业务实现方法

首先说一下接口的需求:

入参JSON:

1 {2 "from": "2020-5-29",3 "limit": 10,4 "offset": 0,5 "order": "hitCount",6 "page": 1,7 "search": "",8 "sort": "desc",9 "sortDirection": "",10 "to": "2020-6-10"

11 }

入参注释说明:

{"from": "开始查询时间","limit": 条数,"offset": 0,"order": "需要排序的字段","page": 页码,"search": "查询条件","sort": "排序规则","sortDirection": "","to": "结束查询时间"}

然后先写接口实现:

1 @PostMapping("categoryList")2 publicR getCategoryList(@Validated @RequestBody QaDetailSearchVo vo){3 RobotPage pageHelper = newRobotPage(vo.getPage(),vo.getLimit());4 returnR.ok(iStatQaService.findQaStatCategory(pageHelper, vo));5 }

解释:POST请求,R 是自定义的返回类型,RobotPage是为了实现一些特殊返回值 继承于mybatsi-plus分页的Ipage:

1 public class RobotPage extends Page implements Serializable {}

重点是业务实现类和mapper层:

对于一般的查询mybatis-plus的条件构造器已经可以满足了,例如:

1 SysUser sysUser = baseMapper.selectOne(Wrappers.lambdaQuery()2 .select(SysUser::getUserId, SysUser::getUsername, SysUser::getPhone, SysUser::getEmail, SysUser::getPassword, SysUser::getDeptId, SysUser::getJobId, SysUser::getAvatar)3 .eq(SysUser::getUsername, username));

但是对于一些需要复杂的或者多表的操作就需要自定义sql语句了,示例:

首先是mapper自定义分页查询接口:

1 @Select("SELECT s.category_id as id, s.category_name as category, SUM(s.hit_count) as hitCount, SUM(s.solve_count) as resolvedCount, SUM(s.not_solve_count) as unresolvedCount " +

2 "FROM core_stat_qa as s ${ew.customSqlSegment}")3 IPage findCategoryListByParams(IPage page, @Param(Constants.WRAPPER) QueryWrapper wrappers);

业务接口不用看 直接是实现类:

1 @Override2 public Grid findQaStatCategory(Pagepage, QaDetailSearchVo vo) {3 //声明返回

4 Grid grid = newGrid();5 //组装查询语句

6 QueryWrapper qaQueryWrapper = new QueryWrapper<>();7 //模糊查询

8 qaQueryWrapper.like(StringUtils.isNotBlank(vo.getSearch()),"category_name",vo.getSearch());9 //where条件

10 qaQueryWrapper.ge("create_time", DateUtil.parse(vo.getFrom(),"yyyy-MM-dd"));11 qaQueryWrapper.lt("create_time",DateUtil.parse(vo.getTo(), "yyyy-MM-dd"));12 //分组

13 qaQueryWrapper.groupBy("category_id","category_name");14 //排序

15 qaQueryWrapper.orderBy(true, !"desc".equals(vo.getSort()),vo.getOrder());16 //调用自定义sql语句

17 IPage statQaIPage =baseMapper.findCategoryListByParams(page, qaQueryWrapper);18 //抽取list

19 List statQaList =statQaIPage.getRecords();20 grid.setList(statQaList);21 grid.setTotal(statQaIPage.getTotal());22 returngrid;23 }

需要解释的:

排序orderBy方法中的第一个true官网上也是给出解释的:表示该条件是否加入最后生成的sql中。

!"desc".equals(vo.getSort()) 是排序规则 asc和desc

调用mapper自定义sql就是:

baseMapper.findCategoryListByParams(page, qaQueryWrapper);

接口完成。

原文:https://www.cnblogs.com/unidentified/p/12992748.html

http://www.jmfq.cn/news/5039785.html

相关文章:

  • 做网站的多少钱/长沙百度快速排名优化
  • 成都网站开发 优帮云/杭州专业seo
  • 如何做电商网站/西安网站推广排名
  • 做培训的网站/营销策略的重要性
  • 网络布线/苏州网络推广seo服务
  • 楚雄微网站建设cx189/产品网络营销推广方案
  • 莱芜最新新闻/做seo推广一年大概的费用
  • 如何选择一个好的网站建设公司/seo自动发布外链工具
  • 做的网站用户密码在哪里找/永久域名查询
  • 保定网站建设开发/百度公司招聘条件
  • 香港网站 淘宝客/b2b外链代发
  • 纸做的花朵成品网站/东莞百度seo电话
  • 网站建设的主要功能/成人电脑培训班办公软件
  • 企业网站 app/前端培训哪个机构靠谱
  • falsh网站模板下载/网站优化软件费用
  • app网站建设多少钱/百度精准获客平台
  • 网站视频封面怎么做/seo服务外包客服
  • 东莞工业品网站建设/中小企业网络营销现状
  • 做网站租服务器一年多少钱/seo网络营销是什么意思
  • wordpress json插件/海淀搜索引擎优化seo
  • 网站购买空间/廊坊seo整站优化
  • 购买网站app制作/焦作seo推广
  • 网站砍价活动怎么做/济宁百度推广公司
  • 网页编辑用什么软件好/seo兼职外包
  • 为什么要做响应式网站/seo技术分享博客
  • 企业网站建设ppt介绍/郑州seo服务公司
  • wordpress分类添加banner/安卓手机优化神器
  • 南通高端网站建设公司/百度一下百度首页官网
  • 北京住房丰台建设委网站/系统优化大师免费版
  • 大兴区社会建设工作办公室网站/百度一下你就知道123