前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sql2java-pagehelper:Spring AOP支持

sql2java-pagehelper:Spring AOP支持

作者头像
10km
发布2022-09-27 08:24:41
3750
发布2022-09-27 08:24:41
举报
文章被收录于专栏:10km的专栏

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的切面实现类

代码语言:javascript
复制
@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查询

代码语言:javascript
复制
@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);
		}
    }
}

前端默认参数定义

字段名

默认值参数名

默认字段定义值

说明

页码参数

pageNum

1

HTTP请求中定义pageNum(页码参数,1-based)的属性名

每页数量

pageSize

10

HTTP请求中定义pageSize(每页数量)的属性名

排序字段

orderBy

取决于服务方法定义

排序(ORDER BY) 字段变量名,用于前端定义排序字段名格式 `${column} [ASC |

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

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

字段名

类型

说明

total

long

总记录数

list

List

数据库查询的结果集

pageNum

int

当前页

pageSize

int

每页的数量

size

int

当前页的数量

pages

int

总页数

prePage

int

前一页

nextPage

int

下一页

isFirstPage

boolean

是否为第一页

isLastPage

boolean

是否为最后一页

hasPreviousPage

boolean

是否有前一页

hasNextPage

boolean

是否有下一页

navigatePages

int

导航页码数

navigatepageNums

int[]

所有导航页号

navigateFirstPage

int

导航条上的第一页

navigateLastPage

int

导航条上的最后一页

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring AOP
    • 启用aspect
      • 注解启动的服务实现
      • 前端默认参数定义
      • 分页查询返回数据字段(PageInfo)说明
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档