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

广东中山网站建设网站开发合同适用印花税

广东中山网站建设,网站开发合同适用印花税,海珠区住房和水务建设局网站,电子商务网站建设域名前言 分页查询在日常开发中无法避免,但每次sql编写时,mybatis 中使用limit,oracle中使用rownum分页,业务场景少的情况下,可以接受.但是随着业务增加每次相同的功能做重复开发又不是那么方便,那么我们有什么方案去解决开发中出现的分页问题呢? 一、PageHelper 框架分页 首先我…前言 分页查询在日常开发中无法避免,但每次sql编写时,mybatis 中使用limit,oracle中使用rownum分页,业务场景少的情况下,可以接受.但是随着业务增加每次相同的功能做重复开发又不是那么方便,那么我们有什么方案去解决开发中出现的分页问题呢? 一、PageHelper 框架分页 首先我们看下pageHelper框架的分页核心类PageInterceptor 同样是实现了mybatis的Interceptor 二、自定义实现mybatis 插件 Interceptor (与pageHelper类似) 当涉及系统中的查询语句,参数为RowBounds时,查询语句会默认根据RowBounds分页 package com.cloud.common;import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.builder.StaticSqlSource; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.plugin.*; import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.RowBounds; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Properties;/*** author haizhuangbu* date 2022/6/5 18:25* mark MybatisIntercepter mybatis 拦截器*/ Intercepts(Signature(type Executor.class, method query, args {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})) Slf4j public class MybatisInterceptor implements Interceptor {private Logger logger LoggerFactory.getLogger(MybatisInterceptor.class);private final Integer MAPPED_STATEMENT_INDEX 0;private final Integer PARAM 1;// 默认分页private final Integer ROW_BOUNDS_INDEX 2;Overridepublic Object intercept(Invocation invocation) throws Throwable {logger.info(分页拦截器);// 1. 方法获取参数Object[] args invocation.getArgs();// 分页器RowBounds rowBounds (RowBounds) args[ROW_BOUNDS_INDEX];// 检查是否为默认分页if (rowBounds RowBounds.DEFAULT) {return invocation.proceed();}// 设置为默认args[ROW_BOUNDS_INDEX] RowBounds.DEFAULT;// 执行器MappedStatement mappedStatements (MappedStatement) args[MAPPED_STATEMENT_INDEX];// 获取执行sqlBoundSql boundSql mappedStatements.getBoundSql(PARAM);String sql boundSql.getSql();// 获取数据库类型String databaseProductName mappedStatements.getConfiguration().getEnvironment().getDataSource().getConnection().getMetaData().getDatabaseProductName();// mysql 的 分页处理if (MYSQL.equalsIgnoreCase(databaseProductName)) {sql mysql(sql, rowBounds);}// oracle 的分页处理if (ORACLE.equalsIgnoreCase(databaseProductName)) {sql oracle(sql, rowBounds);}logger.info(sql:{}, sql);StaticSqlSource staticSqlSource new StaticSqlSource(mappedStatements.getConfiguration(), sql, boundSql.getParameterMappings());// 通过反射设置MapperStatment 的sqlSource字段Field field MappedStatement.class.getDeclaredField(sqlSource);field.setAccessible(true);field.set(mappedStatements, staticSqlSource);return invocation.proceed();}private String oracle(String sql, RowBounds rowBounds) {// 为查询语句给到别名sql select * from (select t1.*, rownum rn from ( sql ) t1 ) t2 where rn (rowBounds.getOffset() - 1) * rowBounds.getLimit() and rn rowBounds.getOffset() * rowBounds.getLimit();return sql;}private String mysql(String sql, RowBounds rowBounds) {// 页数int limit rowBounds.getLimit();// 页码int offset rowBounds.getOffset();String format String.format(LIMIT %d,%d, offset, limit);if (sql.contains(format)) { // sql sql.replaceAll(select, SELECT COUNT(1) total,);sql sql.replaceAll(format, );}sql format;return sql;}Overridepublic Object plugin(Object target) {return Plugin.wrap(target, this);}Overridepublic void setProperties(Properties properties) {Interceptor.super.setProperties(properties);}}将自定义插件交给spring Beanpublic ConfigurationCustomizer configurationCustomizer() {return new ConfigurationCustomizer() {Overridepublic void customize(Configuration configuration) {configuration.addInterceptor(new MybatisInterceptor());}};}
http://www.zqtcl.cn/news/951428/

相关文章:

  • dj网站开发建设网站备案 换空间
  • 网站建设哪家最好网站开发怎么报价
  • app 微商城网站建设网站建设流程百科
  • 网站短期培训学校小说网站怎么建设的
  • 最简单的免费网站制作模板电子商务 网站系统
  • 网站域名备案授权书网站建设长春
  • 网站维护主要从哪几个方面做seo营销的概念
  • 北京网站建设营销网站策划案4500
  • 网站建设售后培训wordpress 过滤html
  • 湖北森泰建设集团有限公司网站国外产品设计网站推荐
  • 网站建设与代运营产品介绍排版网页设计教程
  • 音乐网站排名搜索引擎网络推广方法
  • asp.net 企业网站昆明高端seo怎么做
  • 图书馆网站建设需求方案企业网站背景图片
  • 网站app的作用做家教网站资质
  • 资源网站搭建北京app网站建设
  • 天津做宠物饲料的网站wordpress添加注册页面模板
  • 网站建设公司石家庄php网站开发报价
  • 国外免费网站服务器链接cpa自己做网站
  • 手机网站的优缺点2024中国企业500强
  • 黄河道网站建设网站设计标语
  • 企业网站建设范文wordpress 5.1
  • 网站 河北 备案 慢设计一个营销方案
  • 网站建设培训合肥品牌设计案例
  • 建网站注册免费云服务器
  • 可以做网站的公司有哪些聊天软件开发厂家有哪些
  • 正规网站建设公司一般要多少钱婚纱网站有哪些
  • 企业网站开发目的和意义住房和城乡建设厅官网查询
  • 直播一级a做爰片免费网站wordpress 模板 使用
  • 网站开发中期检查优质的菏泽网站建设