IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> sql2java-pagehelper:Spring AOP支持 -> 正文阅读

[Java知识库]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 {
	//
}

注解启动的服务实现

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

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

@RestController("instanceOfDeviceCenterImplSpringWebController")
@Api(value="DeviceCenterImpl",tags={"DeviceCenterImpl Spring Controller"})
public class DeviceCenterImplSpringWebController {
	@ResponseBody
    @ApiOperation(value = "设备记录分页查询<br>", notes = "设备记录分页查询<br>  \n"
+" 参数说明:  \n"
+" <ul>  \n"
+" <li>pageNum  --- 页码参数(1-based),默认1</li>  \n"
+" <li>pageSize   --- 每页记录数量,默认10</li>  \n"
+" <li>count         ---是否进行count查询,默认true</li>  \n"
+" <li>orderBy    ----排序字段名,格式:${字段1}[DESC|ASC]...,${字段N}[DESC|ASC]), 默认排序字段:id</li>  \n"
+" </ul>",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);
		}
    }
}

前端默认参数定义

字段名默认值参数名默认字段定义值说明
页码参数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实现分页查询

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:56:31  更:2022-09-04 01:01:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:17:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码