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

mybatis结合generator进行分页插件PluginAdapter开发

mybatis结合generator生成的代码没有分页的功能,可以尝试自己继承分页插件PluginAdapter,进行开发,实现自己的分页插件这样generator生产的代码 带分页功能了。

MyBatis MySQL自动生成带分页插件

继承PluginAdapter类,实现相关方法


/*** MyBatis MySQL自动生成带分页插件* * @author */
public class MysqlPaginationPlugin extends PluginAdapter {@Overridepublic boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {addLimit(topLevelClass, introspectedTable, "limitStart");addLimit(topLevelClass, introspectedTable, "limitSize");return super.modelExampleClassGenerated(topLevelClass, introspectedTable);}/*** 为selectByExample添加limitStart和limitSize*/@Overridepublic boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element,IntrospectedTable introspectedTable) {XmlElement isNotNullElement = new XmlElement("if");isNotNullElement.addAttribute(new Attribute("test", "limitStart != null and limitSize >= 0"));isNotNullElement.addElement(new TextElement("limit #{limitStart} , #{limitSize}"));element.addElement(isNotNullElement);return super.sqlMapSelectByExampleWithoutBLOBsElementGenerated(element, introspectedTable);}/*** 为selectByExampleWithBLOBs添加limitStart和limitSize*/@Overridepublic boolean sqlMapSelectByExampleWithBLOBsElementGenerated(XmlElement element,IntrospectedTable introspectedTable) {XmlElement isNotNullElement = new XmlElement("if");isNotNullElement.addAttribute(new Attribute("test", "limitStart != null and limitSize >= 0"));isNotNullElement.addElement(new TextElement("limit #{limitStart} , #{limitSize}"));element.addElement(isNotNullElement);return super.sqlMapSelectByExampleWithBLOBsElementGenerated(element, introspectedTable);}private void addLimit(TopLevelClass topLevelClass, IntrospectedTable introspectedTable, String name) {CommentGenerator commentGenerator = context.getCommentGenerator();/*** 创建类成员变量 如protected Integer limitStart;*/Field field = new Field();field.setVisibility(JavaVisibility.PROTECTED);field.setType(PrimitiveTypeWrapper.getIntegerInstance());field.setName(name);commentGenerator.addFieldComment(field, introspectedTable);topLevelClass.addField(field);/*** 首字母大写*/char c = name.charAt(0);String camel = Character.toUpperCase(c) + name.substring(1);/*** 添加Setter方法*/Method method = new Method();method.setVisibility(JavaVisibility.PUBLIC);method.setName("set" + camel);method.addParameter(new Parameter(PrimitiveTypeWrapper.getIntegerInstance(), name));StringBuilder sb = new StringBuilder();sb.append("this.");sb.append(name);sb.append(" = ");sb.append(name);sb.append(";");/*** 如 this.limitStart = limitStart;*/method.addBodyLine(sb.toString());commentGenerator.addGeneralMethodComment(method, introspectedTable);topLevelClass.addMethod(method);/*** 添加Getter Method 直接调用AbstractJavaGenerator的getGetter方法*/Method getterMethod = AbstractJavaGenerator.getGetter(field);commentGenerator.addGeneralMethodComment(getterMethod, introspectedTable);topLevelClass.addMethod(getterMethod);}public boolean validate(List<String> warnings) {return true;}public static void generate() {String config = PaginationMysqlPlugin.class.getClassLoader().getResource("generatorConfig.xml").getFile();String[] arg = { "-configfile", config, "-overwrite" };ShellRunner.main(arg);}public static void main(String[] args) {generate();}}

相关文章:

mybatis结合generator进行分页插件PluginAdapter开发

mybatis结合generator生成的代码没有分页的功能&#xff0c;可以尝试自己继承分页插件PluginAdapter&#xff0c;进行开发&#xff0c;实现自己的分页插件这样generator生产的代码 带分页功能了。 MyBatis MySQL自动生成带分页插件 继承PluginAdapter类&#xff0c;实现相关方…...

面试:ArrayList和LinkedList

ArrayList和LinkedList是什么&#xff1f; ArrayList&#xff1a; ArrayList是Java集合框架中的一个类&#xff0c;它实现了List接口&#xff0c;底层基于数组实现。ArrayList的特点是支持动态数组&#xff0c;可以自动扩容&#xff0c;适合顺序访问和随机访问。LinkedList&am…...

【uniapp】uniapp+vue2微信小程序实现分享功能

uniappvue2做的微信小程序实现分享功能 问题描述 uniappvue2做的微信小程序&#xff0c;发布以后点击右上角三个点&#xff0c;分享小程序的时候&#xff0c;转发和分享按钮都是灰色 解决方案 转发、分享、复制链接这几个功能需要自己来手动写方法&#xff0c;考虑到每个页…...

WEB渗透Web突破篇-目录爆破

开源 工具名称下载地址工具描述cansinahttps://github.com/deibit/cansina网站的敏感目录发掘工具Cewlcewl | Kali Linux Tools你可以给它的爬虫指定URL地址和爬取深度&#xff0c;接下来Cewl会给你返回一个字典文件dirsearchhttps://github.com/maurosoria/dirsearch目录扫描…...

Windows设备文件同步平台

使用咨询: 扫码添加QQ 永久免费: Gitee下载最新版本 使用说明: CSDN查看使用说明 功能: 定时(全量采集or增量采集) SCADA,MES等系统采集工控机,办公电脑文件. 优势1: 开箱即用. 解压直接运行.插件集成下载. 优势2: 批管理设备. 配置均在后台配置管理. 优势3: 无人值守 采集端…...

用九方智投学习机,学会应对回撤风险

&#xff08;九方智投属于九方智投控股有限公司&#xff08;9636.HK&#xff09;旗下品牌&#xff09;      近期国内海风项目密集落地&#xff0c;行业景气度提升。2023年下半年以来&#xff0c;各省加快建设“十四五”规划&#xff0c;我国海风建设重新迈入快车道&#x…...

maven打包加入本地jar包

在使用maven打包的过程中&#xff0c;有时候我们需要添加一些本地的jar包&#xff0c;并将其打到jar包的lib中。 首先将需要本地的jar包&#xff0c;放到项目的的src/resources/lib下面。 然后在对应的项目的pom中加入一下依赖&#xff1a; <dependency><groupId>…...

从TiDB迁移到OceanBase的实践分享

本文来自OceanBase热心用户的分享 近期&#xff0c;我们计划将业务数据库从TiDB迁移到OceanBase&#xff0c;但面临的一个主要挑战是如何更平滑的完成这一迁移过程。经过研究&#xff0c;了解到OceanBase提供的OMS数据迁移工具能够支持从TiDB到OceanBase的迁移&#xff0c;并且…...

DL00765-光伏故障检测高分辨率无人机热红外图像细粒度含数据集4000+张

光伏发电作为清洁能源的重要组成部分&#xff0c;近年来得到了广泛应用。然而&#xff0c;随着光伏电站规模的扩大&#xff0c;光伏组件在运行过程中可能会出现各种故障&#xff0c;如热斑、遮挡、接线盒故障等。这些故障不仅会影响光伏电站的发电效率&#xff0c;还可能导致更…...

CICD流水线

一、CICD流水线简介 CICD概念 CI/CD流水线是现代软件开发的一个核心概念&#xff0c;它涉及自动化和管理软件从开发到部署的整个生命周期 概念定义 具体有三点&#xff1a;持续集成、持续交付、持续部署 流水线组成为&#xff1a;代码提交、测试、构建、部署、结果通知 二…...

Sass/Scss基础

安装sass npm install -g sass Sass/Scss释义 ASS版本3.0之前的后缀名为.sass&#xff0c;而版本3.0之后的后缀名.scss。 Sass (Syntactically Awesome Stylesheets) 是一个最初由 Hampton Catlin 设计并由 Natalie Weizenbaum 开发的层叠样式表语言。 Sass 是一个由buby语言编…...

【sx sb sz】Centos/Linux sx、sb、sz命令详细介绍

简介 系统版本&#xff1a;Centos7.6 软件版本&#xff1a;lrzsz 0.12.20 sx、sb、sz命令属于lrzsz程序的内容&#xff0c;是使用纠错协议&#xff08;ZMODEM、YMODEM、XMODEM&#xff09;通过拨号串行端口将一个或多个文件发送到在 PC-DOS、CP/M、Unix、VMS 及其他操作系统下运…...

【网络层】IP报文解析和网段划分

文章目录 网络层的作用IP协议协议报头格式网段划分DHCPCIDR划分方案 IP地址的数量限制私有IP地址和公网IP地址LAN和WAN 路由 网络层的作用 前面学习了应用层和传输层&#xff0c;应用层的作用是为用户和应用程序提供网络服务&#xff0c;传输层的作用是提供端口到端口的通信服…...

[GXYCTF2019]禁止套娃1

打开题目 进行常规的检测漏洞&#xff0c;扫描目录发现存在.git文件夹下的文件存在 <?php include "flag.php"; echo "flag在哪里呢&#xff1f;<br>"; if(isset($_GET[exp])) { if (!preg_match(/data:\/\/|filter:\/\/|php:\/\/|phar:\/\…...

人工智能时代,数字化工厂如何改革?提升竞争力?

在人工智能时代&#xff0c;数字化工厂通过数据驱动的决策、智能制造、柔性生产、物联网整合以及人机协作&#xff0c;实现生产效率和产品质量的全面提升&#xff0c;并不断创新以保持竞争力。 --题记 在人工智能时代&#xff0c;数字化工厂的改革…...

气膜建筑的抗风与防火性能:保障仓储的安全—轻空间

气膜建筑以其独特的结构和材料优势&#xff0c;为仓储设施提供了可靠的安全保障。在应对自然灾害特别是强风和火灾时&#xff0c;气膜建筑展示了优异的抗风和防火性能。轻空间将详细探讨这些性能及其在实际应用中的表现。 气膜建筑的抗风能力源于其特殊的结构设计和高性能材料。…...

【秋招笔试】2024-08-07-YT游戏(研发岗)-三语言题解(CPP/Python/Java)

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 本次的题目比较典,…...

【Python知识】m.inplace = inplace 《==》是否执行原地操作

# 如果激活层模块有 inplace 属性&#xff0c;则设置该属性 if hasattr(m, inplace): m.inplace inplace inplace 属性是什么&#xff1f; 在 PyTorch 中&#xff0c;inplace 属性是一个布尔值&#xff0c;用于指示某个操作是否可以以原地&#xff08;in-place&#xff09;模式…...

Go语言fmt包中print相关方法

Go语言的fmt包提供了多种打印相关的函数&#xff0c;主要用于在控制台或其他输出目标上格式化并输出数据。下面是一些常用的print相关方法的用途和区别&#xff1a; 1.fmt.Print() 功能: fmt.Print() 将参数的内容按默认格式输出到标准输出&#xff08;通常是控制台&#xff…...

图片转为pdf怎么弄?亲测有效的8个pdf转换方法安利

图片转PDF怎么弄&#xff1f;在日常的办公生活中&#xff0c;我们经常会需要处理一些文档格式转换难题&#xff0c;图片转成PDF格式就是其中一个&#xff0c;图片转换成PDF格式的话&#xff0c;方便我们传输分享&#xff0c;毕竟现在PDF格式凭借着自身的稳定性和可移植性已经成…...

Vue 渲染器 Renderer 是如何工作的?跨平台渲染虚拟 DOM 的底层架构

Vue渲染器是将虚拟DOM转换为真实平台视图的可配置引擎&#xff0c;通过宿主接口实现跨平台适配&#xff0c;核心职责为创建、更新、卸载节点&#xff0c;依赖patch函数协调新旧vnode同步。Vue 的渲染器&#xff08;Renderer&#xff09;本质是一套将虚拟 DOM 转换为真实平台视图…...

3步实现Windows系统全面优化:开源工具的智能解决方案

3步实现Windows系统全面优化&#xff1a;开源工具的智能解决方案 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_…...

OpenClaw性能调优实战:提升Kimi-VL-A3B-Thinking多模态响应速度的5个技巧

OpenClaw性能调优实战&#xff1a;提升Kimi-VL-A3B-Thinking多模态响应速度的5个技巧 1. 问题背景与性能瓶颈分析 最近我在本地部署了Kimi-VL-A3B-Thinking多模态模型&#xff0c;并通过OpenClaw与之对接&#xff0c;构建了一个自动化图文处理的工作流。但在实际使用中发现&a…...

P4561 [JXOI2018] 排序问题

题意 有一个序列&#xff0c;现在要在结尾加上 mmm 个 [l,r][l,r][l,r] 之间的数&#xff0c;求在所有方案中&#xff0c;猴子排序&#xff08;每次随机一个排列&#xff0c;检查是否有序&#xff09;的次数期望最大次数。 思路 假设最终的序列中数 iii 出现的次数是 cic_ici​…...

毕业设计实战:基于Java+MySQL的C2C商务网站设计与实现指南

毕业设计实战&#xff1a;基于JavaMySQL的C2C商务网站设计与实现指南 在开发“基于JavaMySQL的C2C商务网站”毕业设计时&#xff0c;我曾因商品订单表未通过用户ID、商品ID与收货地址ID三外键关联踩过关键坑——初期设计订单表时&#xff0c;仅记录了订单号、总价、下单时间等基…...

3分钟开启浏览器编程:Core72在线IDE零配置开发指南 [特殊字符]

3分钟开启浏览器编程&#xff1a;Core72在线IDE零配置开发指南 &#x1f680; 【免费下载链接】core Online IDE powered by Visual Studio Code ⚡️ 项目地址: https://gitcode.com/gh_mirrors/core72/core 还在为复杂的开发环境配置而烦恼吗&#xff1f;Core72在线ID…...

LANs.py WiFi干扰功能深度解析:如何有效阻断无线网络连接

LANs.py WiFi干扰功能深度解析&#xff1a;如何有效阻断无线网络连接 【免费下载链接】LANs.py Inject code and spy on wifi users 项目地址: https://gitcode.com/gh_mirrors/la/LANs.py LANs.py是一款功能强大的无线网络干扰工具&#xff0c;能够帮助用户有效阻断特定…...

Linux网络编程核心API速查手册喊

智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式&#xff0c;即所谓的“工程导向型”开发&#xff0c;要求开发者创建一个复杂的项目结构&#xff0c;包括项目文件&#xff08;.csproj&#xff09;、解决方案文件&#xff08;.sln&#xff09;、属性设置以及依赖…...

AI Coding越来越强,我们还有必要学Processing吗? · 创意编程挚

故障表现 发现请求集群 demo 入口时卡住&#xff0c;并且对应 Pod 没有新的日志输出 rootce-demo-1:~# kubectl get pods -n deepflow-otel-spring-demo -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NO…...

kill-doc:让文档下载效率提升90%的自动化工具

kill-doc&#xff1a;让文档下载效率提升90%的自动化工具 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#xff0c;该脚本就是为了解决您的烦…...