精华内容
下载资源
问答
  • MyBatisPlus代码生成器自定义模板时的模板文件
  • MyBatisPlus代码生成

    2018-12-05 15:16:58
    最牛的代码生成器,可定制生成内容,还有生成器页面,生成简单的增删改查
  • MybatisPlus 代码生成

    2021-01-15 13:27:25
    MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter<...

    依赖

    MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:

            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.0</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>3.4.1</version>
            </dependency>
            <!--        默认模板引擎-->
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>2.2</version>
            </dependency>
    

    Navicat建测试表

    在这里插入图片描述
    添加测试数据

    在这里插入图片描述

    测试类写自动生成代码

        @Test
        public  void CodeGenerator () {
            // 创建代码生成器对象
            AutoGenerator mpg = new AutoGenerator();
    
            // 1 全局配置
            GlobalConfig gc = new GlobalConfig();
            // 2 获取项目文件位置 绝对地址+文件位置
            String projectPath = System.getProperty("user.dir");
            gc.setOutputDir(projectPath + "/src/main/java");
            gc.setAuthor("posden");
            gc.setOpen(false); // 当前文件资源管理器
            gc.setIdType(IdType.AUTO); // 设置主键策略
            gc.setServiceName("%sService"); // 自动生成的Service接口首字母I去掉
            gc.setDateType(DateType.ONLY_DATE); // 日期配置
            gc.setSwagger2(true); // 实体属性 Swagger2 注解  当然前提是你配置了swagger 不清楚的可以看我之前博客,地址附在文末
            mpg.setGlobalConfig(gc); 
    
            // 3 数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:mysql://{ip}:3306/test?characterEncoding=UTF-8&useSSL=false&useUnicode=true&serverTimezone=UTC");
             dsc.setSchemaName("test");
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername("root");
            dsc.setPassword("root");
            dsc.setDbType(DbType.MYSQL);
            mpg.setDataSource(dsc);
    
            // 4 包配置
            PackageConfig pc = new PackageConfig();
            pc.setModuleName("test"); // 模块名
            pc.setParent("com.example.demo"); // 父目录
            pc.setEntity("entity");
            pc.setController("controller");
            pc.setMapper("mapper");
            pc.setService("server");
    
            mpg.setPackageInfo(pc);
    
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            // strategy.setInclude("test" + "_\\w*"); // 完整路径 或 正则表达式匹配
            strategy.setInclude("test");
            strategy.setNaming(NamingStrategy.underline_to_camel); // 表名 驼峰命名转化
            strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 字段名
    //        strategy.setTablePrefix("test_"); // 去除前缀
            strategy.setEntityLombokModel(true);// 自动添加lombok
            strategy.setEntityBooleanColumnRemoveIsPrefix(true); // 去除boolean值 is_
            // 自动填充
            TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
            TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);
            ArrayList<TableFill> tableFills = new ArrayList<>();
            tableFills.add(gmtCreate);
            tableFills.add(gmtModified);
            strategy.setTableFillList(tableFills);
    
            // 乐观锁
            strategy.setVersionFieldName("version");
            // restful
            strategy.setRestControllerStyle(true);
            //url t驼峰变 _
            strategy.setControllerMappingHyphenStyle(true);
    
            mpg.setStrategy(strategy);
    
            // 执行
            mpg.execute();
        }
    

    结果
    在这里插入图片描述

    controller层编写curd restful风格

    代码书写可能不严谨,欢迎指正。但功能已实现

    public class TestController {
    
        @Resource
        private TestService testService;
    
        @GetMapping
        public List<Test> getList() {
           return testService.list(null);
        }
    
        @GetMapping("{id}")
        @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "测试ID", dataTypeClass = String.class, required = true)
        })
        public Test getItem(@PathVariable Integer id) {
            return testService.getById(id);
        }
    
        @PutMapping("{id}")
        public boolean updateItem(@PathVariable Integer id, @RequestBody Test test) {
    
            QueryWrapper<Test> updateQueryWrapper = new QueryWrapper<>();
            updateQueryWrapper.eq("id", id);
            int count = testService.count(updateQueryWrapper);
            if(count == 1){
                return testService.updateById(test);
            }else {
                return false;
            }
        }
        @DeleteMapping("{id}")
        public boolean deleteItem(@PathVariable Integer id) {
            QueryWrapper<Test> updateQueryWrapper = new QueryWrapper<>();
            updateQueryWrapper.eq("id", id);
            int count = testService.count(updateQueryWrapper);
            if(count == 1){
                return testService.removeById(id);
            }else {
                return false;
            }
        }
        @PostMapping
        public boolean createItem(@RequestBody Test test) {
            return testService.save(test);
        }
    }
    
    
    

    在这里插入图片描述
    在这里插入图片描述
    SpringBoot2集成swagger3

    展开全文
  • MybatisPlus 代码生成

    2020-06-22 09:22:49
    一、实现效果 不生成service接口只生成service类 生成文件夹名称为controller、service、dao(mapper....CodeGenerator.java 代码生成启动类 classpath/resources/mybatisPlusGneratorConfig.properties 配置文件 c

    一、实现效果

    • 不生成service接口只生成service类
    • 生成文件夹名称为controller、service、dao(mapper.java)、mapper(mapper.xml)
    • 代码中的部分配置通过mybatisPlusGeneartor.properties文件
    • 整合swagger

    二、代码、配置文件、模板说明

    • CodeGenerator.java 代码生成启动类
    • classpath/resources/mybatisPlusGneratorConfig.properties 配置文件
    • classpath/templates 代码生成模板

    三、代码、配置文件、模板内容

    • CodeGenerator.java
    package com.seentao.exam;
    
    /**
     * @author xiaojie
     * @classname CodeGenerator
     * @date 2020/6/19 15:36
     **/
    
    
    import cn.hutool.setting.dialect.Props;
    import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
    import com.baomidou.mybatisplus.core.toolkit.StringPool;
    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.TableInfo;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    import com.seentao.framework.base.BaseServiceImpl;
    import org.apache.commons.lang3.StringUtils;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class CodeGenerator {
    
        /**
         * <p>
         * 读取控制台内容
         * </p>
         */
        public static String scanner(String tip) {
            Scanner scanner = new Scanner(System.in);
            StringBuilder help = new StringBuilder();
            help.append("请输入" + tip + ":");
            System.out.println(help.toString());
            if (scanner.hasNext()) {
                String ipt = scanner.next();
                if (StringUtils.isNotEmpty(ipt)) {
                    return ipt;
                }
            }
            throw new MybatisPlusException("请输入正确的" + tip + "!");
        }
    
        public static void main(String[] args) {
    
            Props props= new Props("generator/mybatisPlusGneratorConfig.properties");
    
            // 代码生成器
            AutoGenerator mpg = new AutoGenerator();
            // 全局配置
            GlobalConfig gc = new GlobalConfig();
            String projectPath = System.getProperty("user.dir");
            gc.setOutputDir(projectPath + "/src/main/java");
            gc.setAuthor(props.getStr("author"));
            gc.setSwagger2(true);
            gc.setOpen(false);
            // gc.setSwagger2(true); 实体属性 Swagger2 注解
            mpg.setGlobalConfig(gc);
    
            // 数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl(props.getStr("jdbc.url"));
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername(props.getStr("jdbc.username"));
            dsc.setPassword(props.getStr("jdbc.password"));
            mpg.setDataSource(dsc);
    
            // 包配置
            PackageConfig pc = new PackageConfig();
            pc.setModuleName(scanner("模块名"));
            pc.setParent(props.getStr("parent.package"));
            mpg.setPackageInfo(pc);
    
            // 自定义配置
            InjectionConfig cfg = new InjectionConfig() {
                @Override
                public void initMap() {
                    // to do nothing
                }
            };
    
            // 如果模板引擎是 freemarker
            String templatePath = "/templates/mapper.xml.ftl";
    
            // 自定义输出配置
            List<FileOutConfig> focList = new ArrayList<>();
            // 自定义配置会被优先输出
            focList.add(new FileOutConfig(templatePath) {
                @Override
                public String outputFile(TableInfo tableInfo) {
                    // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                    return projectPath + "/src/main/java/com/aaa/bbb/" + pc.getModuleName()
                            + "/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
                }
            });
    
            // 自定义mapper配置
            templatePath = "/templates/mapper.java.ftl";
            focList.add(new FileOutConfig(templatePath) {
                @Override
                public String outputFile(TableInfo tableInfo) {
                    // 自定义输出文件名 + pc.getModuleName()
                    String expand = projectPath + "/src/main/java/com/aaa/bbb/" +pc.getModuleName() + "/" + "dao";
                    String entityFile = String.format((expand + File.separator + "%s" + ".java"), tableInfo.getMapperName());
                    return entityFile;
                }
            });
            // 自定义controller的代码模板
            templatePath = "/templates/controller.java.ftl";
            // 自定义配置会被优先输出
            focList.add(new FileOutConfig(templatePath) {
                @Override
                public String outputFile(TableInfo tableInfo) {
                    // 自定义输出文件名 + pc.getModuleName()
                    String expand = projectPath + "/src/main/java/com/aaa/bbb/" +pc.getModuleName() + "/" + "controller";
                    String entityFile = String.format((expand + File.separator + "%s" + ".java"), tableInfo.getControllerName());
                    return entityFile;
                }
            });
    
    
            // 自定义service的代码模板
            templatePath = "/templates/serviceImpl.java.ftl";
            // 自定义配置会被优先输出
            focList.add(new FileOutConfig(templatePath) {
                @Override
                public String outputFile(TableInfo tableInfo) {
                    // 自定义输出文件名 + pc.getModuleName()
                    String expand = projectPath + "/src/main/java/com/aaa/bbb/" +pc.getModuleName() + "/" + "service";
                    String entityFile = String.format((expand + File.separator + "%s" + ".java"), tableInfo.getServiceImplName().substring(0,tableInfo.getServiceImplName().length()-4));
                    return entityFile;
                }
            });
    
            cfg.setFileOutConfigList(focList);
            mpg.setCfg(cfg);
    
            // 配置模板
            TemplateConfig templateConfig = new TemplateConfig();
            //不生成默认的service接口与serviceImpl实现类
            templateConfig.setXml(null);
            templateConfig.setMapper(null);
            templateConfig.setService(null);
            templateConfig.setServiceImpl(null);
            mpg.setTemplate(templateConfig);
    
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setNaming(NamingStrategy.underline_to_camel);
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
            strategy.setEntityLombokModel(true);
            strategy.setRestControllerStyle(true);
            // 公共父类
            strategy.setSuperEntityClass("com.aaa.bbb.base.BaseEntity");
            strategy.setSuperControllerClass("com.aaa.bbb.base.BaseController");
            strategy.setSuperMapperClass("com.aaa.bbb.base.FrameworkBaseMapper");
            strategy.setSuperServiceImplClass(BaseServiceImpl.class);
    
            strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
            strategy.setControllerMappingHyphenStyle(true);
            strategy.setTablePrefix(pc.getModuleName() + "_");
    
            mpg.setStrategy(strategy);
            mpg.setTemplateEngine(new FreemarkerTemplateEngine());
            mpg.execute();
        }
    
    }
    
    
    • mybatisPlusGneratorConfig.properties
    parent.package = com.aaa.bbb
    
    jdbc.url=jdbc:mysql://xxx:3306/db?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
    jdbc.username=root
    jdbc.password=111111
    
    author =  xiaojie
    
    • 模板 controller.java.ftl
    package ${package.Controller};
    
    
    import org.springframework.web.bind.annotation.*;
    import org.springframework.beans.factory.annotation.Autowired;
    import ${package.Service}.${table.serviceImplName?substring(0,(table.serviceImplName)?length-4)};
    import ${package.Entity}.${entity};
    import com.seentao.framework.result.Result;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import io.swagger.annotations.ApiImplicitParam;
    import javax.validation.constraints.NotBlank;
    import org.springframework.validation.annotation.Validated;
    import lombok.extern.slf4j.Slf4j;
    <#if restControllerStyle>
    import org.springframework.web.bind.annotation.RestController;
    <#else>
    import org.springframework.stereotype.Controller;
    </#if>
    <#if superControllerClassPackage??>
    import ${superControllerClassPackage};
    </#if>
    
    /**
    *
    *
    * @author ${author}
    * @since ${date}
    * @version v1.0
    */
    <#if restControllerStyle>
    @Slf4j
    @Api(tags = {"${table.comment!}"})
    @RestController
    @Validated
    <#else>
    @Controller
    </#if>
    @RequestMapping("<#if package.ModuleName??>/${package.ModuleName}</#if>/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>")
    <#if kotlin>
    class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}()</#if>
    <#else>
        <#if superControllerClass??>
    public class ${table.controllerName} extends ${superControllerClass} {
        <#else>
    public class ${table.controllerName} {
        </#if>
    
        @Autowired
        private ${table.serviceImplName?substring(0,(table.serviceImplName)?length-4)} ${table.serviceImplName?substring(0,(table.serviceImplName)?length-4)};
    
        @RequestMapping(value = "/getById")
        @ApiOperation(value = "注释", notes = "详细说明")
        @ApiImplicitParam(name = "id", value = "主键id", dataType="String",required = true)
        public Result<${entity}> getById(@NotBlank(message="id不能为空") String id){
          return null;
        }
    }
    </#if>
    
    • 模板serviceImpl.java.ftl
    package ${package.ServiceImpl?substring(0,package.ServiceImpl?length-5)};
    
    import ${package.Entity}.${entity};
    import ${package.Mapper?substring(0,package.Mapper?length-7)+".dao"}.${table.mapperName};
    import ${superServiceImplClassPackage};
    import org.springframework.stereotype.Service;
    
    /**
     * <p>
     * ${table.comment!} 服务实现类
     * </p>
     *
     * @author ${author}
     * @since ${date}
     */
    @Service
    <#if kotlin>
    open class ${table.serviceImplName?substring(0,(table.serviceImplName)?length-4)} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(){
    
    }
    <#else>
    public class ${table.serviceImplName?substring(0,(table.serviceImplName)?length-4)} extends ${superServiceImplClass}<${table.mapperName}, ${entity}>{
    
    }
    </#if>
    
    
    • 模板mapper.java.ftl
    package ${package.Mapper?substring(0,package.Mapper?length-7)+".dao"};
    
    import ${package.Entity}.${entity};
    import ${superMapperClassPackage};
    
    /**
     * <p>
     * ${table.comment!} Mapper 接口
     * </p>
     *
     * @author ${author}
     * @since ${date}
     */
    <#if kotlin>
    interface ${table.mapperName} : ${superMapperClass}<${entity}>
    <#else>
    public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {
    
    }
    </#if>
    
    
    • 模板mapper.xml.ftl
    <?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="${package.Mapper?substring(0,package.Mapper?length-7)+".dao"}.${table.mapperName}">
    
    
        <!-- 通用查询映射结果 -->
        <resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
            <#list table.fields as field>
                <#if field.keyFlag><#--生成主键排在第一位-->
             <id column="${field.name}" property="${field.propertyName}" jdbcType="${field.type}"/>
                </#if>
            </#list>
            <#list table.commonFields as field><#--生成公共字段 -->
             <result column="${field.name}" property="${field.propertyName}" jdbcType="${field.type}"/>
            </#list>
            <#list table.fields as field>
                <#if !field.keyFlag><#--生成普通字段 -->
            <result column="${field.name}" property="${field.propertyName}" jdbcType="${field.type}"/>
                </#if>
            </#list>
        </resultMap>
    
    
    
        <!-- 通用查询结果列 -->
        <sql id="Base_Column_List">
            <#list table.commonFields as field>
                ${field.name},
            </#list>
            ${table.fieldNames}
        </sql>
    </mapper>
    
    展开全文
  • mybatisPlus自动生成代码,详细介绍,需要改动的地方里面有注解,只需要导入相关依赖,简单易懂
  • 主要介绍了SpringBoot+MybatisPlus+代码生成器整合示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • mybatisplus代码生成

    万次阅读 2019-02-25 10:09:51
    官方文档:https://mp.baomidou.com/guide/ ... 目录结构: 生成 :xml映射文件, mapper接口 ,service接口与实现, controller类 ,实体类与AR; XML映射文件可以不与mapper放一个包,可以自己...

     官方文档:https://mp.baomidou.com/guide/

     逆向工程链接:   https://pan.baidu.com/s/1FloqrIhI2d1ns4XgvYPIkA      

    目录结构:

    生成 :xml映射文件, mapper接口 ,service接口与实现, controller类 ,实体类与AR;

      XML映射文件可以不与mapper放一个包,可以自己移动到resources/mapping下面              

                                                           代码生成器  


    1) MP 提供了大量的自定义设置,生成的代码完全能够满足各类型的需求 2) MP 的代码生成器  和 Mybatis MBG 代码生成器: MP 的代码生成器都是基于 java 代码来生成。MBG 基于 xml 文件进行代码生成 MyBatis 的代码生成器可生成: 实体类、Mapper 接口、Mapper 映射文件 MP 的代码生成器可生成: 实体类(可以选择是否支持 AR)、Mapper 接口、Mapper 映射                        文件、 Service 层、Controller 层. 
     
    3) 表及字段命名策略选择 在 MP 中,我们建议数据库表名 和 表字段名采用驼峰命名方式, 如果采用下划 线命名方式 请开启全局下划线开关,如果表名字段名命名方式不一致请注解指定,我 们建议最好保持一致。 
     
    这么做的原因是为了避免在对应实体类时产生的性能损耗,这样字段不用做映射就能直 接和实体类对应。当然如果项目里不用考虑这点性能损耗,那么你采用下滑线也是没问 题的,只需要在生成代码时配置 dbColumnUnderline 属性就可以 
     
     
    6.1 代码生成器依赖  
    1) 模板引擎 MP 的代码生成器默认使用的是 Apache 的 Velocity 模板,当然也可以更换为别的模板 技术,例如 freemarker。此处不做过多的介绍。 需要加入 Apache Velocity 的依赖        <dependency>       <groupId>org.apache.velocity</groupId>       <artifactId>velocity-engine-core</artifactId>       <version>2.0</version>   </dependency> 2) 加入 slf4j ,查看日志输出信息         <dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-api</artifactId>    <version>1.7.7</version>   </dependency>   <dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-log4j12</artifactId>    <version>1.7.7</version>   </dependency> 
     
     
    6.2 MP 代码生成器示例代码 
     @Test  public void testGenerator() {  

    //全局配置

      GlobalConfig config = new GlobalConfig();

      config.setActiveRecord(true)   //是否支持AR模式      

       .setAuthor("weiyunhui") //作者

         .setOutputDir("D:\\workspace_my\\mp03\\src\\main\\java") //生成路径    

          .setFileOverride(true)//文件覆盖    

      .setServiceName("%sService")  //设置生成的service接口名 首字母是否为I    

      .setIdType(IdType.AUTO) //主键策略       ; 

     
      //数据源配置   DataSourceConfig dsConfig = new DataSourceConfig();  

    dsConfig.setDbType(DbType.MYSQL)  

      .setUrl("jdbc:mysql://localhost:3306/javaEE_0228")  

     .setDriverName("com.mysql.jdbc.Driver")    

    .setUsername("root")  

      .setPassword("1234");  

    //策略配置  

    StrategyConfig  stConfig = new StrategyConfig();

      stConfig.setCapitalMode(true)  // 全局大写命名  

      .setDbColumnUnderline(true)  //表名 字段名 是否使用下滑 线命名    

    .setNaming(NamingStrategy.underline_to_camel) // 数据 库表映射到实体的命名策略

        .setInclude("tbl_employee")  //生成的表

        .setTablePrefix("tbl_"); // 表前缀  

    //包名策略  

    PackageConfig pkConfig = new PackageConfig();  

    pkConfig.setParent("com.atguigu.mp")

        .setController("controller")  

      .setEntity("beans")  

      .setService("service");

      AutoGenerator ag  = new AutoGenerator().setGlobalConfig(config)    

         .setDataSource(dsConfig)        

     .setStrategy(stConfig)    

         .setPackageInfo(pkConfig);  

    ag.execute();  }   
    6.3 ServiceImpl 说明 
    EmployeeServiceImpl 继承了 ServiceImpl 类,mybatis-plus 通过这种方 式为我们注入了 EmployeeMapper,这样可以使用 service 层默认为我们提供的很 多方法,也可以调用我们自己在 dao 层编写的操作数据库的方法. 
    6

     

    ==============================================================================================

    配置文件:

    spring/spring-mybatis.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">
    
        <!-- dataSource -->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
            <property name="url" value="${db.master.url}" />
            <property name="username" value="${db.master.user}" />
            <property name="password" value="${db.master.password}" />
            <!-- 配置监控统计拦截的filters -->
            <property name="filters" value="mergeStat,wall,log4j2" />
            <property name="initialSize" value="5" />
            <property name="maxActive" value="100" />
            <property name="minIdle" value="10" />
            <property name="maxWait" value="60000" />
            <property name="validationQuery" value="SELECT 'x'" />
            <property name="testOnBorrow" value="true" />
            <property name="testOnReturn" value="true" />
            <property name="testWhileIdle" value="true" />
            <property name="timeBetweenEvictionRunsMillis" value="60000" />
            <property name="minEvictableIdleTimeMillis" value="300000" />
            <property name="removeAbandoned" value="true" />
            <property name="removeAbandonedTimeout" value="1800" />
            <property name="logAbandoned" value="true" />
        </bean>
    
        <!-- Spring整合Mybatis -->
        <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <!-- 自动扫描Mapping.xml文件 -->
            <property name="mapperLocations" value="classpath*:/sqlMapperXml/*.xml"></property>
            <property name="configLocation" value="classpath:xml/mybatis-config.xml"></property>
            <property name="typeAliasesPackage" value="com.wangzhixuan.model"/>
            <property name="globalConfig" ref="globalConfig"/>
            <property name="plugins">
                <array>
                    <!-- 分页插件配置 -->
                    <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
                        <property name="dialectType" value="mysql"/>
                        <property name="optimizeType" value="aliDruid" />
                    </bean>
                </array>
            </property>
        </bean>
    
        <!-- MP 全局配置 -->
        <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
            <property name="idType" value="0"/>
            <property name="dbColumnUnderline" value="true"/>
        </bean>
    
        <!-- MyBatis 动态实现  -->
        <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!-- 对Dao 接口动态实现,需要知道接口在哪  -->
            <property name="basePackage" value="com.wangzhixuan.mapper"/>
        </bean>
    
        <!-- 事务管理 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!-- 事务注解 -->
        <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
        <!-- 事务管理 属性 -->
        <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="select*" propagation="REQUIRED" read-only="true" />
                <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception" />
                <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" />
                <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception" />
                <tx:method name="*" propagation="REQUIRED" />
            </tx:attributes>
        </tx:advice>
    
        <!-- 配置切面 -->
        <aop:config expose-proxy="true" proxy-target-class="true">
            <aop:advisor advice-ref="transactionAdvice" pointcut="execution(* com.wangzhixuan.service..*.*(..))"/>
        </aop:config>
    </beans>

    感谢赞助与支持!

    展开全文
  • SpringBoot MybatisPlus 代码生成器1. 创建SpringBoot项目(Maven)2. 引入依赖3. 编写代码4. 目录结构 1. 创建SpringBoot项目(Maven) 略 2. 引入依赖 freemarker(或Apache Velocity)、web、mybatis-plus、test ...

    1. 创建SpringBoot项目(Maven)

    2. 引入依赖

    freemarker(或Apache Velocity)、web、mybatis-plus、test 启动器
    mysql驱动、mybatis-plus-generator(代码生成器)、lombok依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>
        </dependency>
    </dependencies>
    

    完整pom文件

    <?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.2.6.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>top.theonly</groupId>
        <artifactId>springboot_mybatisplus_generate</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springboot_mybatisplus_generate</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>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
            <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.2.0</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>3.2.0</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </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>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    

    3. 编写代码

    package top.theonly.demo.generator;
    
    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.core.toolkit.StringPool;
    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 org.junit.Test;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import static com.baomidou.mybatisplus.annotation.IdType.AUTO;
    
    /**
     * @ClassName MyGenerator
     * @Description: MyBatisPlus 代码生成器
     * 结合resources/templates中模板运行此方法生成mybatis代码
     * @Author theonly
     * @Date 2020/5/4 0004 下午 3:11
     * @Version V1.0
     * @See 版权声明
     **/
    public class MyGenerator {
        // 数据库类型
        private final DbType dbType = DbType.MYSQL;
        // 数据库连结信息
        private final String dbUrl = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8" +
                "&serverTimezone=Asia/Shanghai&useSSL=false&autoReconnect=true&autoReconnectForPools=true&allowMultiQueries=true";
        private final String driver = "com.mysql.cj.jdbc.Driver"; // mysql8.0驱动,mysql5.6需改为com.mysql.jdbc.Driver
        private final String userName = "root";
        private final String password = "123456";
    
        // IntelliJ workSpace 目录,即工程物理根路径
        private final String  workSpacePath = "E:\\IdeaWorkspace\\";
        // 项目名, 可以采用父子项目的配法SpringBoot\springboot_mybatisplus_generate,如果无子项目,则直接写项目名称,例如:springboot
        private final String projectName = "springboot\\springboot_mybatisplus_generate";
        // 指定包名,即controll,service,entity,mapper子包的父包
        private final String packageName = "top.theonly.demo";
        // 模块名,则需在模块名前加. 例:.auth, 一般不加,它是在生成的controll,service,entity包后面再加子包
        private final String moduleName = "";
        // 作者名
        private final String author = "theonly";
    
        // 指定生成的表名多个表之间用逗号,如果要生成所有表,可以不需要配置,执行generateCode中的方案二
    //        private final String[] tableNames = new String[]{"tb_user","tb_role"};
    
    
        @Test
        public void generateCode() {
    //             serviceNameStartWithI:user -> UserService, 设置成true: user -> IUserService
            /* 方案一:只生成指定表 */
    //            generateByTables(false, packageName, tableNames);
            /* 方案二:.所有表生成 */
             generateByTables(false, packageName);
            System.out.println("当前目录:" + System.getProperty("user.dir"));
        }
        /**
         * 根据表自动生成
         * @param serviceNameStartWithI 默认为false
         * @param packageName      包名
         * @param tableNames      表名
         * @author theonly
         */
        private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
            //配置数据源
            DataSourceConfig dataSourceConfig = getDataSourceConfig();
            // 策略配置
            StrategyConfig strategyConfig = getStrategyConfig(tableNames);
            // 全局变量配置
            GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI);
            // 包名配置
            PackageConfig packageConfig = getPackageConfig(packageName);
            // 自定义模板配置文件及输出
            InjectionConfig injectionConfig = getInjectionConfig();
    
            //自动生成
            atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig,injectionConfig);
        }
        /**
         * 集成
         * @param dataSourceConfig 配置数据源
         * @param strategyConfig  策略配置
         * @param config      全局变量配置
         * @param packageConfig  包名配置
         * @author theonly
         */
        private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig config,
                                   PackageConfig packageConfig, InjectionConfig injectionConfig) {
            // 代码生成器
            new AutoGenerator()
                    .setGlobalConfig(config)
                    .setDataSource(dataSourceConfig)
                    .setStrategy(strategyConfig)
                    .setPackageInfo(packageConfig)
                    .setCfg(injectionConfig)
                    .setTemplateEngine(new FreemarkerTemplateEngine()) // 缺省Velocity不需要配这句
                    .setTemplate(
                            // 关闭默认 xml 生成,调整生成 至 根目录
                            new TemplateConfig().setXml(null))
                    .execute();
        }
        /**
         * 设置包名
         * @param packageName 父路径包名
         * @param packageName 模块名
         * @return PackageConfig 包名配置
         * @author theonly
         */
        private PackageConfig getPackageConfig(String packageName) {
            return new PackageConfig()
                    .setParent(packageName)
                    .setXml("mapper.xml" + moduleName)
                    .setMapper("mapper" + moduleName)
                    .setController("controller" + moduleName)
                    .setEntity("entity" + moduleName);
        }
        /**
         * 全局配置
         * @param serviceNameStartWithI false
         * @return GlobalConfig
         * @author theonly
         */
        private GlobalConfig getGlobalConfig(boolean serviceNameStartWithI) {
            GlobalConfig globalConfig = new GlobalConfig();
            globalConfig
                    // XML columList
                    .setBaseColumnList(true)
                    // XML ResultMap
                    .setBaseResultMap(true)
                    // 开启 activeRecord 模式
                    .setActiveRecord(false)
                    // XML 二级缓存
                    .setEnableCache(false)
                    //作者
                    .setAuthor(author)
                    //设置输出路径
                    .setOutputDir(getOutputDir(projectName))
                    // 主键自增
                    .setIdType(AUTO)  // IdType 枚举类中有多种主键生成方式
                    // 是否覆盖文件
                    .setFileOverride(true);
            if (!serviceNameStartWithI) {
                //设置service名
                globalConfig.setServiceName("%sService");
            }
            /*其它设置可选项*/
            // 自定义文件命名,注意 %s 会自动填充表实体属性!
            //          .setXmlName("%sMapper").setMapperName("%sMapper")
            // .setServiceName("MP%sService")
            // .setServiceImplName("%sServiceImpl")
            // .setControllerName("%sAction")
    
            return globalConfig;
        }
        /**
         * 返回项目路径
         * @param projectName 项目名
         * @return 项目路径
         * @author theonly
         */
        private String getOutputDir(String projectName) {
            return workSpacePath + projectName + "/src/main/java/";
    
        }
        /**
         * 策略配置
         * @param tableNames 表名
         * @return StrategyConfig
         * @author theonly
         */
        private StrategyConfig getStrategyConfig(String... tableNames) {
            // 自定义需要填充的字段
            List<TableFill> tableFillList = new ArrayList<TableFill>();
            // 如 每张表都有一个创建时间、修改时间
            // 而且这基本上就是通用的了,新增时,创建时间和修改时间同时修改
            // 修改时,修改时间会修改,
            // 虽然像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);
            */
            return new StrategyConfig()
                    // 全局大写命名 ORACLE 注意
                    // .setCapitalMode(true)
                    // 此处可以修改为您的表前缀,即生成的实体不要带这个前缀
                    .setTablePrefix(new String[]{"tb_"})
                    //从数据库表到文件的命名策略,数据库下划线命名转为java代码中驼峰命名
                    .setNaming(NamingStrategy.underline_to_camel)
                    // 需要生成的表,多个英文逗号分割,不加则全部生成,也可以.setInclude(new String[] {"tb_user, "tb_role"})
    //                    .setInclude(tableNames)
                    // 排除生成的表
                    // .setExclude(new String[]{"tb_test"})
                    // 时间字段缺省有值的处理,主要针对Oracle,mysql可以用数据库本身缺省设置
                    // .setTableFillList(tableFillList)
                    //公共父类
                    // .setSuperControllerClass("com.baomidou.demo.TestController")
                    // .setSuperEntityClass("com.baomidou.demo.base.BsBaseEntity")
                    // .setSuperServiceClass("com.baomidou.demo.base.BsBaseService")
                    // .setSuperServiceImplClass("com.baomidou.demo.base.BsBaseServiceImpl")
    
                    // 写于父类中的公共字段
                    // .setSuperEntityColumns("id") // 如果设置,那么:生成的实体类当中没有id
                    // 【实体】是否生成字段常量(默认 false)
                    // public static final String ID = "test_id";
                    //使用lombok
                    .setEntityLombokModel(true)
                    // 逻辑删除属性名称
                    .setLogicDeleteFieldName("deleted")
                    //rest风格 Controller
                    .setRestControllerStyle(true);
        }
        /**
         * 配置数据源
         * @return 数据源配置 DataSourceConfig
         * @author theonly
         */
        private DataSourceConfig getDataSourceConfig() {
            return new DataSourceConfig().setDbType(dbType)
                    .setUrl(dbUrl)
                    .setUsername(userName)
                    .setPassword(password)
                    .setDriverName(driver);
        }
        /**
         * 根据表自动生成
         * @param packageName 包名
         * @param tableNames 表名
         * @author theonly
         */
        @SuppressWarnings("unused")
        private void generateByTables(String packageName, String... tableNames) {
            generateByTables(true, packageName, tableNames);
        }
    
        /**
         * @Description: 自定义模板配置文件及输出
         * @Param:  无
         * @return: InjectionConfig
         * @author theonly
         **/
        private InjectionConfig   getInjectionConfig(){
            InjectionConfig cfg = new InjectionConfig() {
                @Override
                public void initMap() {
                    Map<String, Object> map = new HashMap<String, Object>();
                    map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
                    this.setMap(map);
                }
            };
    
            // 如果模板引擎是 freemarker
             String templatePath = "/templates/mapper.xml.ftl";
            // 如果模板引擎是 velocity
    //            String templatePath = "/templates/mapper.xml.vm";
    
            // 自定义输出配置
            List<FileOutConfig> focList = new ArrayList<>();
            // 自定义配置会被优先输出
            focList.add(new FileOutConfig(templatePath) {
                @Override
                public String outputFile(TableInfo tableInfo) {
                    // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                    return  workSpacePath +  projectName + "/src/main/resources/mapper/"
                            + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
                }
            });
        /*
        cfg.setFileCreate(new IFileCreate() {
            @Override
            public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
                // 判断自定义文件夹是否需要创建
                checkDir("调用默认方法创建的目录,自定义目录用");
                if (fileType == FileType.MAPPER) {
                    // 已经生成 mapper 文件判断存在,不想重新生成返回 false
                    return !new File(filePath).exists();
                }
                // 允许生成模板文件
                return true;
            }
        });
        */
            cfg.setFileOutConfigList(focList);
            return cfg;
        }
    }
    

    4. 目录结构

    在这里插入图片描述

    展开全文
  • 自动生成mapper接口层,service层,控制器层的crud,包括分页的操作,以及对应的qo高查类
  • SpringBoot整合MyBatisPlus代码生成

    千次阅读 2020-04-14 22:36:02
    } public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir")...
  • 初次执行报错了后来查了下缺一个依赖 <dependency> <groupId>org.apache.velocity</groupId>...再次执行发现就生成了目录没有生成文件,后面排查发现表名必须写大写才可以 =表名需大写
  • 第 6 章 MybatisPlus 代码生成器 1、代码生成器简介 MybatisPlus AutoGenerator 代码生成器的简介 MybatisPlus 提供了强大的代码生成器,可以快速生成各类代码,真正的做到了即开即用 AutoGenerator 是 MyBatis-...
  • 最近写了一个mybatisPlus代码生成器,用于生成sql拼接代码以及自定义类。 项目地址 !!!!使用前请先看README.md文件!!!!!! !!!!使用前请先看README.md文件!!!!!! !!!!使用前请先看README.md...
  • MyBatisPlusCode.java public class MyBatisPlusCode { public static void main(String[] args) { //构建代码生成器对象 // 代码生成器 AutoGenerator generator = new AutoGenerator(); // set freemarker engine ...
  • MybatisPlus 代码生成器模板

    千次阅读 2019-09-17 16:30:03
    * -mp代码生成工具类,使用freemarker引擎 * -使用前可以进行的修改 * gc.setAuthor 设置作者,会出现在类前 * gc.setOutputDir 设置输出路径,默认为 D:\ * pc.setParent 设置输出的包名(也即文件夹名) * ...
  • IDEA mybatisplus 代码生成器的配置

    万次阅读 2019-07-31 10:15:43
    mybatisplus项目结构图 BaseController控制器 package cn.cxyxmg.mybatisplus.common.base; public class Base...CodeGenerator是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Map...
  • 最近在网上找MyBatisPlus代码生成工具类,找到的都不太满意,所以自己重写并开源到了Github,有兴趣的小伙伴可以下载来参考: 地址:https://github.com/ylw-github/MP-Generator 里面的代码实现细节不用过多的...
  • MyBatisPlus代码生成器的使用简单案例

    千次阅读 2020-09-13 17:52:17
    当数据库表非常多时,如果手动创建会非常耗时,而mybatisplus自带的代码生成器可以自动的帮我们全部生成出来。 首先引入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>...
  • @SpringBoot的MyBatisPlus代码生成和分页 代码生成 项目结构目录 pom.xml,详细的看文末的代码 application.properties CodeGenerator.java 开始生成代码 好了,准备工作差不多了,开始生成代码 运行结果: ...
  • 获取父类的类名 "superMapperClass": "BaseMapper", "superServiceClass": ..."superMapperClassPackage": "com.baomidou.mybatisplus.core.mapper.BaseMapper", "superServiceClassPackage": "com.baomidou.mybatis
  • mybatisplus代码自动生成工具,模板可自行修改,目前支持orace和mysql。如果其他数据库,请自放相应驱动
  • MybatisPlus代码生成器含XML文件

    千次阅读 2020-10-13 10:08:34
    MybatisPlus代码生成器含XML文件: 所需依赖: <!--Mybatis-Plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> ...
  • 问题:类前面多了一个D 解决方案: 把strategy.setTablePrefix(pc.getModuleName() + "_")改为strategy.setTablePrefix("d_");
  • 主要介绍了MybatisPlus使用代码生成器遇到的小问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • } public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir")...
  • Mybatisplus代码生成器(界面&插件)

    千次阅读 2020-06-28 21:08:13
    Mybatisplus 代码生成器提供 Windows Desktop 和 IDEA Plugin 两个版本。 主要功能 Mybatis Plus代码生成器     - 自定义配置模板     - 自定义表-实体映射信息     - 多数据源管理 ...
  • mybatisplus代码生成器maven依赖sqlgenerator.java maven依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> ...
  • MybatisPlus 代码生成器 出现 实体类的@ApiModel 注解报错 解决方法 问题 解决问题 在pom.xml 文件中添加 ApiModel 依赖 就不会报错了 <!--配置ApiModel在实体类中不生效--> <dependency> <...
  • 废话不多说,直接上代码 import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.core.toolkit.StringPool...
  • Mybatisplus代码生成器的配置(高级)

    千次阅读 2020-09-27 00:11:08
    Mybatisplus代码生成器的配置 前言 如果你在使用SpringBoot框架进行Web开发的话,那么就可以使用MybatisPlus的代码生成器来进行代码的生成。这里会告诉你基本的代码生成器的配置,可以满足代码大多数人的代码生成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,001
精华内容 4,400
关键字:

mybatisplus代码生成