电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Springboot如何使用mybatis實現攔截SQL分頁

瀏覽:3日期:2023-05-10 11:07:06

新建一個類MyPageInterceptor.java(注意在springboot中要添加注解@Component)

package com.grand.p1upgrade.mapper.test;import java.sql.Connection;import java.util.Map;import java.util.Properties;import org.apache.ibatis.executor.parameter.ParameterHandler;import org.apache.ibatis.executor.statement.StatementHandler;import org.apache.ibatis.mapping.MappedStatement;import org.apache.ibatis.plugin.Interceptor;import org.apache.ibatis.plugin.Intercepts;import org.apache.ibatis.plugin.Invocation;import org.apache.ibatis.plugin.Plugin;import org.apache.ibatis.plugin.Signature;import org.apache.ibatis.reflection.MetaObject;import org.apache.ibatis.reflection.SystemMetaObject;import org.springframework.stereotype.Component;@Component@Intercepts({@Signature(type=StatementHandler.class,method='prepare',args={Connection.class,Integer.class})})public class MyPageInterceptor implements Interceptor { private int page; private int size; @SuppressWarnings('unused') private String dbType; @SuppressWarnings('unchecked') @Override public Object intercept(Invocation invocation) throws Throwable { System.out.println('plugin is running...'); StatementHandler statementHandler = (StatementHandler)invocation.getTarget(); MetaObject metaObject = SystemMetaObject.forObject(statementHandler); while(metaObject.hasGetter('h')){ Object object = metaObject.getValue('h'); metaObject = SystemMetaObject.forObject(object); } while(metaObject.hasGetter('target')){ Object object = metaObject.getValue('target'); metaObject = SystemMetaObject.forObject(object); } MappedStatement mappedStatement = (MappedStatement)metaObject.getValue('delegate.mappedStatement'); String mapId = mappedStatement.getId(); if(mapId.matches('.+ByPager$')){ ParameterHandler parameterHandler = (ParameterHandler)metaObject.getValue('delegate.parameterHandler'); Map<String, Object> params = (Map<String, Object>)parameterHandler.getParameterObject(); page = (int)params.get('page'); size = (int)params.get('size'); String sql = (String) metaObject.getValue('delegate.boundSql.sql'); sql += ' limit '+(page-1)*size +','+size; metaObject.setValue('delegate.boundSql.sql', sql); } return invocation.proceed(); } @Override public Object plugin(Object target) { return Plugin.wrap(target, this); } @Override public void setProperties(Properties properties) { String limit = properties.getProperty('limit','10'); this.page = Integer.parseInt(limit); this.dbType = properties.getProperty('dbType', 'mysql'); } }

添加測試TestMapper.java

package com.grand.p1upgrade.mapper.test;import java.util.List;import java.util.Map;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface TestMapper { public List<Map<String,Object>> findByPager(Map<String, Object> params); public long count();}

TestMapper.xml

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='com.grand.p1upgrade.mapper.test.TestMapper'> <select resultType='java.util.HashMap'> select * from p1project.sys_user </select> <select resultType='long'> select count(1) from p1project.sys_user </select></mapper>

在調用TestMapper.findByPager傳遞參數的時候將page和size傳入即可

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 密度电子天平-内校-外校电子天平-沈阳龙腾电子有限公司 | 亳州网络公司 - 亳州网站制作 - 亳州网站建设 - 亳州易天科技 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 江苏皓越真空设备有限公司 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 黄石东方妇产医院_黄石妇科医院哪家好_黄石无痛人流医院 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | 辐射仪|辐射检测仪|辐射巡测仪|个人剂量报警仪|表面污染检测仪|辐射报警仪|辐射防护网 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 超声波反应釜【百科】-以马内利仪器 | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 煤棒机_增碳剂颗粒机_活性炭颗粒机_木炭粉成型机-巩义市老城振华机械厂 | STRO|DTRO-STRO反渗透膜(科普)_碟滤 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 波纹补偿器_不锈钢波纹补偿器_巩义市润达管道设备制造有限公司 | 深圳希玛林顺潮眼科医院(官网)│深圳眼科医院│医保定点│香港希玛林顺潮眼科中心连锁品牌 | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 商秀—企业短视频代运营_抖音企业号托管 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 开云(中国)Kaiyun·官方网站 - 登录入口 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 钢结构厂房造价_钢结构厂房预算_轻钢结构厂房_山东三维钢结构公司 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 恒温恒湿试验箱_高低温试验箱_恒温恒湿箱-东莞市高天试验设备有限公司 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 电缆接头_防水接头_电缆防水接头_防水电缆接头_上海闵彬 |