Spring-Boot如何使用mybatis-plus-gennretor代码生成器生成代码+分页插件
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,本篇内容主要讲解"Spring-Boot如何使用mybatis-plus-gennretor代码生成器生成代码+分页插件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来
千家信息网最后更新 2025年01月25日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";// 自定义需要填充的字段// ListtableFillList = 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(){ IPagepage = 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安全错误
数据库的锁怎样保障安全
电脑本地服务器端地址
吴江区口碑好服务器高质量的选择
联想服务器40647报错
通过输入框修改数据库信息
非数据库节点的应用
企业app登录显示服务器错误
计算机网络技术专业就业咨询
宣传部网络安全法简报
南宁有软件开发大公司吗
大兴服务器交换机回收公司
汽车销量数据库
机关网络安全风险防控自查
网络安全的必要手段
未来5g时代网络安全值得关注
手机网络安全微电影
数据库专门指导
网络安全公司世界排名
县委网信办开展网络安全宣传活动
关键词查询数据库
天津精选labview软件开发
绿色地狱有没有官方服务器
为什么数据库表tb开头
动森服务器时间
海南实力强的服务器租用云服务器
sql数据库锁类型
重庆办公系统软件开发价钱
服务器自带的管理口
数据库pta关系数据理论
国际网络安全论坛永久会址
软件开发和技术支持区别