博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Springboot整合Mybatis-Plus

Posted on 2020-07-01 18:37  kali98k  阅读(701)  评论(0编辑  收藏  举报

springboot 整合 MyBatis-Plus

一、添加相关依赖

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>


<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1.tmp</version>
</dependency>


<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>


<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>


<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>3.0.20.RELEASE</version>
</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

二、代码生成器

package com.gdfxit.example.springdemo.config;

 

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

 

import org.springframework.util.StringUtils;

 

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.DataSourceConfig;

import com.baomidou.mybatisplus.generator.config.FileOutConfig;

import com.baomidou.mybatisplus.generator.config.GlobalConfig;

import com.baomidou.mybatisplus.generator.config.PackageConfig;

import com.baomidou.mybatisplus.generator.config.StrategyConfig;

import com.baomidou.mybatisplus.generator.config.TemplateConfig;

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.mysql.cj.jdbc.Driver;

 

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.isEmpty(ipt)) {

                return ipt;

            }

        }

        throw new MybatisPlusException("请输入正确的" + tip + "");

    }

    

    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");

 // 设置作者

gc.setAuthor("");

// 是否打开输出目录

gc.setOpen(false);

// 实体属性 Swagger2 注解

//gc.setSwagger2(true);

// 开启 BaseResultMap

gc.setBaseResultMap(true);

// 接口命名方式

gc.setServiceName("%sService");

mpg.setGlobalConfig(gc);

 

// 数据源配置

DataSourceConfig dsc = new DataSourceConfig();

 

dsc.setDriverName("com.mysql.cj.jdbc.Driver");

dsc.setUsername("");

dsc.setPassword("");

dsc.setUrl("jdbc:mysql://localhost:3306/数据库名称?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true");

mpg.setDataSource(dsc);

 

// 包配置

PackageConfig pc = new PackageConfig();

pc.setParent("com.gdfxit.example.springdemo");

mpg.setPackageInfo(pc);

 

 // 自定义配置

        InjectionConfig cfg = new InjectionConfig() {

            @Override

            public void initMap() {

                // to do nothing

            }

        };

 

        // 如果模板引擎是 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 projectPath + "/src/main/resources/mapper/"

                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;

            }

        });

        

        cfg.setFileOutConfigList(focList);

        mpg.setCfg(cfg);

        

        // 配置模板

        TemplateConfig templateConfig = new TemplateConfig();

        

        templateConfig.setXml(null);

        mpg.setTemplate(templateConfig);

        

     // 策略配置

        StrategyConfig strategy = new StrategyConfig();

        // 下划线转驼峰命名

        strategy.setNaming(NamingStrategy.underline_to_camel);

        strategy.setColumnNaming(NamingStrategy.underline_to_camel);

        //strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");

        // 启用 Lombok 插件

        //strategy.setEntityLombokModel(true);

        strategy.setRestControllerStyle(true);

        // 公共父类

        //strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");

        // 写于父类中的公共字段

        //strategy.setSuperEntityColumns("id");

        // 设置表名控制台输出

        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));

        strategy.setControllerMappingHyphenStyle(true);

        strategy.setTablePrefix(pc.getModuleName() + "_");

        mpg.setStrategy(strategy);

        // 设置生成模板

        mpg.setTemplateEngine(new FreemarkerTemplateEngine());

        mpg.execute();

        

}

}

 

生成之后项目的结构:

 

 

 

 

三、修改启动类

@MapperScan(“mapper接口的包名”)

 

 

 

 

四、修改配置文件

#mybatis-plus 配置

mybatis-plus.mapper-locations=classpath:/mapper/*.xml

mybatis-plus.type-aliases-package=生产实体类的包名

mybatis-plus.global-config.db-config.db-type=mysql

mybatis-plus.global-config.db-config.id-type=input

mybatis-plus.global-config.db-config.field-strategy=NOT_NULL

mybatis-plus.global-config.db-config.column-underline=true

mybatis-plus.global-config.field-strategy=NOT_NULL

mybatis-plus.configuration.map-underscore-to-camel-case=true

mybatis-plus.configuration.cache-enabled=false

mybatis-plus.configuration.jdbc-type-for-null=null

#配置sql打印日志

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

#数据源配置

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/数据库名称?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

spring.datasource.username=username

spring.datasource.password=password