Spring-Boot如何使用mybatis-plus-gennretor代码生成器生成代码+分页插件
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容主要讲解"Spring-Boot如何使用mybatis-plus-gennretor代码生成器生成代码+分页插件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来
千家信息网最后更新 2025年12月02日Spring-Boot如何使用mybatis-plus-gennretor代码生成器生成代码+分页插件
本篇内容主要讲解"Spring-Boot如何使用mybatis-plus-gennretor代码生成器生成代码+分页插件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring-Boot如何使用mybatis-plus-gennretor代码生成器生成代码+分页插件"吧!
代码自动生成器
1.导入需要的jar包
org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.projectlombok lombok true com.baomidou mybatis-plus-boot-starter 3.0.6 mysql mysql-connector-java 5.1.37 com.baomidou mybatis-plus-generator 3.1.2 org.freemarker freemarker 2.3.28 org.apache.velocity velocity 1.7
2 . 模板引型的选择
package com.shi.generator;import java.util.Scanner;/** * 模板引型的选择 */public class GeneratorTest { /** * 读取控制台内容 */ public static int scanner() { Scanner scanner = new Scanner(System.in); String help = " !!代码生成, 输入 0 表示使用 Velocity 引擎 !!" + "\n对照表:" + "\n0 = Velocity 引擎" + "\n1 = Freemarker 引擎" + "\n请输入:"; System.out.println(help); int slt = 0; // 现在有输入数据 if (scanner.hasNext()) { String ipt = scanner.next(); if ("1".equals(ipt)) { slt = 1; } } return slt; }}3 . 案例
package com.shi.generator;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.FieldFill;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.InjectionConfig;import com.baomidou.mybatisplus.generator.config.*;import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;import com.baomidou.mybatisplus.generator.config.po.TableFill;import com.baomidou.mybatisplus.generator.config.po.TableInfo;import com.baomidou.mybatisplus.generator.config.rules.IColumnType;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.*;/** * myBatis-Plus 代码生成器案例 * 说明:该案例生成了controller ,service,dao,mapper,entity * 加入:Lombok(小辣椒),swagger2 * * *************需要自定义的变量*************** */public class MysqlGenerator extends GeneratorTest { /** * MySQL 生成演示 */ public static void main(String[] args) { int result = scanner(); /****************************配置信息********************/ String[] tableName = new String[] { "large_area","machine_component" };/****************************需要生成的表名********************/ String outputDir = "D:\\project\\shiTest\\shi_Mybatis_plus2\\src\\main\\java";/****************************输出的项目目录********************/ String moduleName = "marchine";/*****************************模块名(需要自己指定)**********/ String parentPackage = "com.shi"; /****************************自定义父包路径********************/ String userName = "";/****************************用户名********************/ String password = ""; /****************************密码(url一样要改)********************/ String url = "jdbc:mysql://192.168.69.11:3306/shihaifeng?useUnicode=true&allowPublicKeyRetrieval=true&useSSL=false&characterEncoding=utf8";// 自定义需要填充的字段// List tableFillList = new ArrayList<>();// tableFillList.add(new TableFill("large_area", FieldFill.INSERT_UPDATE)); // 代码生成器 AutoGenerator mpg = new AutoGenerator().setGlobalConfig( // 全局配置 new GlobalConfig() .setOutputDir(outputDir) .setFileOverride(true)// 是否覆盖文件 .setActiveRecord(true)// 开启 activeRecord 模式 .setEnableCache(false)// XML 二级缓存 .setBaseResultMap(true)// XML ResultMap .setBaseColumnList(true)// XML columList .setIdType(IdType.AUTO)//主键生成策略,自增 .setSwagger2(true)//生成swagger2注解支持 //.setKotlin(true) 是否生成 kotlin 代码 .setAuthor("shiye") // 自定义文件命名,注意 %s 会自动填充表实体属性! // .setEntityName("%sEntity"); // .setMapperName("%sDao") // .setXmlName("%sDao") // .setServiceName("MP%sService") // .setServiceImplName("%sServiceDiy") // .setControllerName("%sAction") ).setDataSource( // 数据源配置 new DataSourceConfig() .setDbType(DbType.MYSQL) // 数据库类型 .setTypeConvert(new MySqlTypeConvert() { // 自定义数据库表字段类型转换【可选】 @Override public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) { System.out.println("转换类型:" + fieldType); // if ( fieldType.toLowerCase().contains( "tinyint" ) ) { // return DbColumnType.BOOLEAN; // } return super.processTypeConvert(globalConfig, fieldType); } }) .setDriverName("com.mysql.jdbc.Driver") .setUsername(userName) .setPassword(password) .setUrl(url) ).setStrategy( // 策略配置 new StrategyConfig() .setCapitalMode(true)// 全局大写命名 // .setDbColumnUnderline(true)//全局下划线命名// .setTablePrefix(new String[]{"bmd_", "mp_"})// 此处可以修改为您的表前缀 .setNaming(NamingStrategy.underline_to_camel)// 表名生成策略 .setInclude(tableName) // 需要生成的表 如果不指定就生成全部的表 // .setExclude(new String[]{"test"}) // 排除生成的表 // 自定义实体父类 // .setSuperEntityClass("com.baomidou.demo.TestEntity") // 自定义实体,公共字段// .setSuperEntityColumns(new String[]{"test_id"})// .setTableFillList(tableFillList)// .setEntityBooleanColumnRemoveIsPrefix(true) // 自定义 mapper 父类 // .setSuperMapperClass("com.baomidou.demo.TestMapper") // 自定义 service 父类 // .setSuperServiceClass("com.baomidou.demo.TestService") // 自定义 service 实现类父类 // .setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl") // 自定义 controller 父类 // .setSuperControllerClass("com.baomidou.demo.TestController") // 【实体】是否生成字段常量(默认 false) // public static final String ID = "test_id"; // .setEntityColumnConstant(true) // 【实体】是否为构建者模型(默认 false) // public User setName(String name) {this.name = name; return this;} // .setEntityBuilderModel(true) // 【实体】是否为lombok模型(默认 false)document .setEntityLombokModel(true) // Boolean类型字段是否移除is前缀处理 // .setEntityBooleanColumnRemoveIsPrefix(true) // .setRestControllerStyle(true) // .setControllerMappingHyphenStyle(true) ).setPackageInfo( // 包配置 new PackageConfig() .setModuleName(moduleName) .setParent(parentPackage) .setController("controller")// 这里是控制器包名,默认web 别的(service,entity...)都可以默认 ).setCfg( // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值 new InjectionConfig() { @Override public void initMap() { Map map = new HashMap<>(); map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp"); this.setMap(map); } }.setFileOutConfigList(Collections.singletonList(new FileOutConfig( "/templates/mapper.xml" + ((1 == result) ? ".ftl" : ".vm")) { // 自定义输出文件目录 指定生成的mapper.xml文件输出位置 @Override public String outputFile(TableInfo tableInfo) { return "d:\\mapper\\" + tableInfo.getEntityName() + ".xml"; } })) ).setTemplate( // 关闭默认 xml 生成,调整生成 至 根目录 new TemplateConfig().setXml(null) // 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy // 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置: // .setController("..."); // .setEntity("..."); // .setMapper("..."); // .setXml("..."); // .setService("..."); // .setServiceImpl("..."); ); // 执行生成 if (1 == result) { mpg.setTemplateEngine(new FreemarkerTemplateEngine()); } mpg.execute(); // 打印注入设置,这里演示模板里面怎么获取注入内容【可无】 System.err.println(mpg.getCfg().getMap().get("abc")); }} 分页插件
可以参考官网(https://mp.baomidou.com/guide/page.html)
1. 编写配置文件,初始化分页插件
/** * Spring boot方式 * @author shfeng * @create 2019-07-19 14:25 */@EnableTransactionManagement@Configuration@MapperScan("com.shi.*.mapper.mapper*")public class MybatisPlusConfig { /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); }}2. 写测试文件
/** * 这是是使用mybaits的分页功能 但是分页不是物理分页需要改进 * 增加分页插件 PaginationInterceptor 以后 ,使用的是物理分页 */ @Test public void getLargerAraByPage(){ IPage page = new Page<>(); page.setSize(2l); page.setCurrent(1l); Wrapper queryWrapper = new QueryWrapper(); page = largeAreaMapper.selectPage(page,queryWrapper); System.out.println("page = " + page); } 到此,相信大家对"Spring-Boot如何使用mybatis-plus-gennretor代码生成器生成代码+分页插件"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
生成
代码
配置
插件
生成器
实体
文件
模板
字段
内容
数据
类型
全局
引擎
目录
策略
输入
输出
前缀
数据库
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国泰安数据库英语
使用脚本导入数据库表
ado 数据库 封装类
伯明翰大学论文数据库
ipv6DNS服务器没检测到
互联网科技节奏感
midas载入cad数据库
网络数据库如何求总分和排序
双向服务器电源
gom引擎怪物数据库详解
网络安全水彩海报
虹口区企业数据库研发厂家价格
内蒙古青年网络技术大赛
孤岛惊魂5服务器打不开
长宁区网络营销网络技术代理价格
凝思系统服务器之网卡配置
数据库 原则 冗余
山东弘度互联网科技公司怎么样
asp服务器端压力大吗
网络安全博弈是
数据库原理考研笔记
上海凶宅数据库网页
中间件及系统软件开发是做什么的
被流放的费格雷六零数据库
色弱报考计算机网络技术有影响么
深圳无限空间网络技术游戏
服务器共享文件如何转换本地磁盘
软件开发功规和原型的区别
网络安全检测装置一区
有声博达软件开发