MybatisPlus:自动生成代码及解决MybatisPlus冲突问题

MybatisPlus:自动生成代码模板(Mybatis系列:Maven冲突)

1、MybatisPlus依赖:项目已存在的Mybatis依赖
2、自动生成代码

1、MybatisPlus依赖:项目已存在的Mybatis依赖

<-- 依赖问题:可能导致依赖冲突(exclusion) -->
<!-- Mybatis核心依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
    <exclusions>
        <exclusion>
            <artifactId>mybatis-spring</artifactId>
            <groupId>org.mybatis</groupId>
        </exclusion>
        <exclusion>
            <artifactId>mybatis</artifactId>
            <groupId>org.mybatis</groupId>
        </exclusion>
    </exclusions>
</dependency>

<!-- tk.mybatis核心依赖 -->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.1.5</version>
    <exclusions>
        <exclusion>
            <artifactId>mybatis</artifactId>
            <groupId>org.mybatis</groupId>
        </exclusion>
        <exclusion>
            <artifactId>mybatis-spring</artifactId>
            <groupId>org.mybatis</groupId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 分页助手插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.12</version>
    <exclusions>
        <exclusion>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <groupId>org.mybatis.spring.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>

<!-- MyBatis-Plus核心 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2</version>
</dependency>

<!--mybatis-plus代码生成器 相关依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.3.1</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.3.1</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.0</version>
</dependency>

2、自动生成代码

package com.codeGenerator;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
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 org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class CodeGenerator {
 
    public static void main(String[] args) {
        /*项目路径:*/
        String projectPath = System.getProperty("user.dir");
        /*包的命名:*/
        String parentPackageName = "com.zx";
        String entityPackageName = "bean.pojo.goodsAnalyze";
        String controllerPackageName = "web.controller.goodsAnalyze";
        String servicePackageName = "web.service.goodsAnalyze";
        String mapperPackageName = "web.mapper.goodsDatasource.goodsAnalyze";
        String xmlPackageName = "/goodsDatasource/goodsAnalyze";
        /*去除表前缀:*/
        String[] tablePrefix = new String[]{"s_", "t_", "c_"};

        /*一、创建代码生成器:模板引擎默认为velocity*/
        AutoGenerator mpg = new AutoGenerator();

        /*二、数据源配置:mybatis支持的数据库这里都支持*/
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL)
                .setDriverName("com.mysql.cj.jdbc.Driver")
                .setUrl("jdbc:mysql://sandbox-mysql-goods-item.zhixianai.com:3308/goods_item?useUnicode=true&characterEncoding=UTF8&useAffectedRows=true&serverTimezone=Asia/Shanghai")
                .setUsername("goods_item")
                .setPassword("rrLN24zJJV7e");
        mpg.setDataSource(dsc);

        /*三、全局配置*/
        GlobalConfig gc = new GlobalConfig();
        /*是否打开输出路径*/
        gc.setOpen(false)
                /*文件输出路径*/
                .setOutputDir(projectPath + "/src/main/java")
                /*是否覆盖已有文件*/
                .setFileOverride(true)
                /*XML是否需要BaseResultMap*/
                .setBaseResultMap(true)
                /*XML是否需要显示字段*/
                .setBaseColumnList(true)
                /*开发人员*/
                .setAuthor(scanner("开发者"))
                /*主键策略*/
                .setIdType(IdType.AUTO)
                /*文件命名:%s 会自动填充表实体命名*/
                .setControllerName("%sController")
                .setServiceName("%sService")
                .setMapperName("%sMapper")
                .setXmlName("%sMapper");
        mpg.setGlobalConfig(gc);

        /*四、包配置:设置每一层的包名*/
        PackageConfig pc = new PackageConfig();
        pc.setParent(parentPackageName)
                .setEntity(entityPackageName)
                .setController(controllerPackageName)
                .setService(servicePackageName)
                .setMapper(mapperPackageName);
        mpg.setPackageInfo(pc);

        /*五、自定义参数配置*/
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        /*模板引擎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 projectPath + "/src/main/resources/mapper/" + xmlPackageName
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);

        /*六、模板配置*/
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

        /*七、策略配置*/
        StrategyConfig sc = new StrategyConfig
        		/*表名*/
                .setInclude(scanner("表名:多个英文逗号分割").split(","))
                /*去除表前缀*/
                .setTablePrefix(tablePrefix)
                /*表名生成策略*/
                .setNaming(NamingStrategy.underline_to_camel)
                /*字段名生成策略*/
                .setColumnNaming(NamingStrategy.underline_to_camel)
                /*实体类是否采用构建者模式*/
                .setEntityBuilderModel(true)
                /*实体类是否采用Lombok*/
                .setEntityLombokModel(true)
                /*实体类字段是否生成注解*/
                .setEntityTableFieldAnnotationEnable(true)
                /*Controller是否采用Restful风格*/
                .setRestControllerStyle(true);
                /*父类实体,没有就不用设置*/
                sc.setSuperEntityClass();
                /*父类实体,id*/
        		sc.setSuperEntityColumns("id");
        		/*父类控制器,没有就不用设置*/
        		sc.setSuperControllerClass();
        mpg.setStrategy(sc);
        mpg.execute();
    }


    /**
     * <p>
     * 读取控制台内容
     * </p>
     */
    public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入" + tip + ":");
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotEmpty(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值