文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码怎么写

2023-06-22 02:24

关注

这篇文章给大家介绍SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Mybatis-Plus是一个优秀的Mybatis增强工具,目前更新到3.1.1。Mybatis-Plus原生提供了很多单表操作的方法,极大简化了繁琐的curd的操作,同时又支持xml配置、自定义sql的编写。这篇文章介绍SpringBoot2集成Mybatis-Plus 3.1.0,同时介绍mybatis提供MysqlGenerator.java,你可以通过指定的数据库表生成对应的bean、mapper.xml、mapper.java、service.java、serviceImpl.java,甚至controller

pom.xml添加相关依赖,请注意版本号:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.6.1</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.asiainfo</groupId>    <artifactId>rocketmq-producer</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>rocketmq-producer</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>        <!--Springboot集成mybatis-plus开始-->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <scope>runtime</scope>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-freemarker</artifactId>        </dependency>        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>2.3</version>        </dependency>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.1.5</version>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>            <exclusions>                <exclusion>                    <groupId>org.junit.vintage</groupId>                    <artifactId>junit-vintage-engine</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.testng</groupId>            <artifactId>testng</artifactId>            <version>RELEASE</version>            <scope>compile</scope>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>            <!-- 添加代码 -->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-resources-plugin</artifactId>                <version>2.7</version>                <dependencies>                    <dependency>                        <groupId>org.apache.maven.shared</groupId>                        <artifactId>maven-filtering</artifactId>                        <version>1.3</version>                    </dependency>                </dependencies>            </plugin>        </plugins>        <resources>            <resource>                <directory>src/main/resources</directory>                <includes>                    <include>***.xml</include>                    <include>**@Configuration@Slf4jpublic class MyBatisPlusConfig {        @Bean    public PaginationInterceptor paginationInterceptor() {        log.debug("注册分页插件");        return new PaginationInterceptor();    }        @Bean    @Profile({"test"})// 设置 dev test 环境开启    public PerformanceInterceptor performanceInterceptor() {        return new PerformanceInterceptor();    }        @Bean    public ISqlInjector sqlInjector() {        return new LogicSqlInjector();    }}

MysqlGenerator.java

package com.asiainfo.crm.rocketmq.config;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.InjectionConfig;import com.baomidou.mybatisplus.generator.config.*;import com.baomidou.mybatisplus.generator.config.po.TableFill;import com.baomidou.mybatisplus.generator.config.po.TableInfo;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.ArrayList;import java.util.List;public class MysqlGenerator {        public static void main(String[] args) {        // 代码生成器        AutoGenerator mpg = new AutoGenerator();        // 全局配置        GlobalConfig gc = new GlobalConfig();//        String projectPath = System.getProperty("user.dir");//        gc.setOutputDir(projectPath + "/src/main/java");        String projectPath = "E://java-workspace//rocketmq//rocketmq_space//rocketmq//rocketmq-producer";        gc.setOutputDir(projectPath + "\\src\\main\\java\\com\\asiainfo\\crm\\rocketmq\\cell");        // TODO 设置用户名        gc.setAuthor("zhangpb");        gc.setOpen(true);        // service 命名方式        gc.setServiceName("%sService");        // service impl 命名方式        gc.setServiceImplName("%sServiceImpl");        // 自定义文件命名,注意 %s 会自动填充表实体属性!        gc.setMapperName("%sMapper");        gc.setXmlName("%sMapper");        gc.setFileOverride(true);        gc.setActiveRecord(true);        // XML 二级缓存        gc.setEnableCache(false);        // XML ResultMap        gc.setBaseResultMap(true);        // XML columList        gc.setBaseColumnList(false);        mpg.setGlobalConfig(gc);        // TODO 数据源配置        DataSourceConfig dsc = new DataSourceConfig();        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/rocketmq?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC");        dsc.setDriverName("com.mysql.jdbc.Driver");        dsc.setUsername("root");        dsc.setPassword("root");        mpg.setDataSource(dsc);        // TODO 包配置        PackageConfig pc = new PackageConfig();        //pc.setModuleName(scanner("模块名"));//        pc.setParent("com.zhangpb.demodruid");        pc.setEntity("entity");        pc.setService("service");        pc.setServiceImpl("service.impl");        mpg.setPackageInfo(pc);        // 自定义需要填充的字段        List<TableFill> tableFillList = new ArrayList<>();        //如 每张表都有一个创建时间、修改时间        //而且这基本上就是通用的了,新增时,创建时间和修改时间同时修改        //修改时,修改时间会修改,        //虽然像Mysql数据库有自动更新几只,但像ORACLE的数据库就没有了,        //使用公共字段填充功能,就可以实现,自动按场景更新了。        //如下是配置        //TableFill createField = new TableFill("gmt_create", FieldFill.INSERT);        //TableFill modifiedField = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);        //tableFillList.add(createField);        //tableFillList.add(modifiedField);        // 自定义配置        InjectionConfig cfg = new InjectionConfig() {            @Override            public void initMap() {                // to do nothing            }        };        List<FileOutConfig> focList = new ArrayList<>();        focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {            @Override            public String outputFile(TableInfo tableInfo) {                // 自定义输入文件名称                return projectPath + "/src/main/resources/mapper/"                        + "/" + tableInfo.getEntityName() + "Mapper" + ".xml";            }        });        cfg.setFileOutConfigList(focList);        mpg.setCfg(cfg);        mpg.setTemplate(new TemplateConfig().setXml(null));        // 策略配置        StrategyConfig strategy = new StrategyConfig();        strategy.setNaming(NamingStrategy.underline_to_camel);        strategy.setColumnNaming(NamingStrategy.underline_to_camel);        strategy.setEntityLombokModel(true);        // 设置逻辑删除键        strategy.setLogicDeleteFieldName("deleted");        // TODO 指定生成的bean的数据库表名        strategy.setInclude("trade_coupon");        //strategy.setSuperEntityColumns("id");        // 驼峰转连字符        strategy.setControllerMappingHyphenStyle(true);        mpg.setStrategy(strategy);        // 选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有!        mpg.setTemplateEngine(new FreemarkerTemplateEngine());        mpg.execute();    }}

关于SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码怎么写就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯