• sql2java-pagehelper:Spring AOP支持


    sql2java是我几年年开始写的一个sql2java是一个轻量级数据库(SQL)访问代码(java)生成器。这几年一直在根据工作需要维护升级。本文接续上一篇博客《sql2java-pagehelper:参照Mybatis-PageHelper实现分页查询》介绍Sql2java-pagehelper提供的分页查询(PageHelper)和动态SQL语句(WhereHelper)功能对Spring的支持

    Spring AOP

    如果使用切面技术,启动PageHelper及WhereHelper就更加方便上面的示例中对PageHelper,WhereHelper的直接调用都可以省去,只是需要增加一些切面的切入点定义。

    启用aspect

    PageHelper及WhereHelper支持Spring AOP(切面),需要如下在@ComponentScan注解中增加包名gu.sql2java.pagehelper.aspect,才能让Spring扫描到PageHelper及WhereHelper的切面实现类

    @SpringBootApplication
    @ComponentScan({"net.facelib.eam.devicecenter",
    "net.facelib.eam.web.handler",
    /** 启用分页查询切面支持 */
    "gu.sql2java.pagehelper.aspect"})
    public class RestfulService {
    	//
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    注解启动的服务实现

    如下在服务方法中定义@Sql2javaEnablePage,@EnableWhereHelper以启动分页查询和动态SQL脚本生成,

    在方法实现中直接调取PageHelper.getWhere()即可获取WhereHelper根据方法注解生成的SQL WHERE语句,执行SQL查询

    @RestController("instanceOfDeviceCenterImplSpringWebController")
    @Api(value="DeviceCenterImpl",tags={"DeviceCenterImpl Spring Controller"})
    public class DeviceCenterImplSpringWebController {
    	@ResponseBody
        @ApiOperation(value = "设备记录分页查询
    "
    , notes = "设备记录分页查询
    \n"
    +" 参数说明: \n" +"
      \n" +"
    • pageNum --- 页码参数(1-based),默认1
    • \n"
      +"
    • pageSize --- 每页记录数量,默认10
    • \n"
      +"
    • count ---是否进行count查询,默认true
    • \n"
      +"
    • orderBy ----排序字段名,格式:${字段1}[DESC|ASC]...,${字段N}[DESC|ASC]), 默认排序字段:id
    • \n"
      +"
    "
    ,httpMethod="GET") @RequestMapping(method=RequestMethod.GET, value="/DeviceCenterImpl/loadDeviceByWherePage") @Sql2javaEnablePage @EnableWhereHelper(debuglog=true) @OrderBy(value="id") @Equal(value="status") @Expression("id>0") @Expression("name !='$DUMMY_DEVICE_DONOT_DELETE$'") public PageInfo<DeviceBean> loadDeviceByWherePage() { try { // 从PageHelper.getWhere()获取的由WhereHelper生成的SQL WHERE脚本 // WHERE status = 'ENABLE' AND id > 0 AND name != '$DUMMY_DEVICE_DONOT_DELETE$' ORDER BY id return new PageInfo<>(dm.daoLoadDeviceByWhere(PageHelper.getWhere())); } catch (RuntimeException e) { throw wrapServiceRuntimeException(e); } } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    前端默认参数定义

    字段名默认值参数名默认字段定义值说明
    页码参数pageNum1HTTP请求中定义pageNum(页码参数,1-based)的属性名
    每页数量pageSize10HTTP请求中定义pageSize(每页数量)的属性名
    排序字段orderBy取决于服务方法定义排序(ORDER BY) 字段变量名,用于前端定义排序字段名格式 `${column} [ASC

    分页查询返回数据字段(PageInfo)说明

    Sqljava的PageInfo字段与Mybatis-PageHelper的PageInfo字段保持一致,字段说明如下

    字段名类型说明
    totallong总记录数
    listList数据库查询的结果集
    pageNumint当前页
    pageSizeint每页的数量
    sizeint当前页的数量
    pagesint总页数
    prePageint前一页
    nextPageint下一页
    isFirstPageboolean是否为第一页
    isLastPageboolean是否为最后一页
    hasPreviousPageboolean是否有前一页
    hasNextPageboolean是否有下一页
    navigatePagesint导航页码数
    navigatepageNumsint[]所有导航页号
    navigateFirstPageint导航条上的第一页
    navigateLastPageint导航条上的最后一页

    关于sql2java PageHelper的简单使用示例,参见上一篇博客《sql2java-pagehelper:参照Mybatis-PageHelper实现分页查询

  • 相关阅读:
    Linux内核源码分析 (B.2)虚拟地址空间布局架构
    Mac 重启后 nvm -v 报错 zsh: command not found: nvm
    物联网-常见的服务架构演变
    C++ 不知树系列之二叉排序树(递归和非递归遍历、删除、插入……)
    flume安装配置
    Jdk8到jdk11 踩坑指南
    带你认识设计模式的【策略模式】及优缺点
    NanoPC-T4 RK3399:uboot cmd与boot加载
    apache log4j2vulfocus靶场漏洞复现
    vue3子页面刷新,v-show联合v-if实现柱状图隐藏展示,和按条件查询
  • 原文地址:https://blog.csdn.net/10km/article/details/126606945