Spring cloud整合MyBatis-plus和mybatis-plus-generator

1. 介绍

项目中的一些单表的增删改查功能,逻辑简单,但是在创建service、mapper、xml的过程很耗费时间。我们可以通过整合mybatis-plus和mybatis-plus-generator来处理这些问题,说明:mybatis-plus只是给我们提供一种便捷的操作,节约了写简单sql的时间,但其自身还是支持原生sql的。对于一些逻辑复杂或者多表操作或者动态sql,建议写原生sql。

本文所有素材皆参考mybatis-plus官网,官网移步: MyBatis-Plus

2. 创建spring cloud项目

创建过程可以参考网上相关教程。我就不再赘述!我的项目接口如下:

demo-parent

    demo-client

    demo-service

其中parent是父级pom项目,client是对外暴露接口的maven项目,service是web项目

3. 整合mybatis-plus

3.1 pom.xml中添加配置



    4.0.0
    
        park-user
        com.body.park
        1.0.0
    

    park-user-service
    1.0.0
    park-user-service
    Demo project for Spring Boot

    jar

    
        1.8
        1.0.0
        1.0.0
        1.0.11
        2.3.3
        1.1.10
        5.1.32
        5.1.10
        3.1.2
        3.5.0
        2.3
        5.7.7
        1.2.17
    

    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            org.springframework.cloud
            spring-cloud-starter-bootstrap
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-dubbo
        
        
            com.alibaba.spring
            spring-context-support
            ${spring.context.support.version}
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            ${mybatis-plus.version}
        
        
        
            com.alibaba
            druid-spring-boot-starter
            ${druid.version}
        
        
        
            mysql
            mysql-connector-java
        
        
        
            com.baomidou
            mybatis-plus-generator
            ${mybatis.plus.generator.version}
        
        
        
            org.apache.velocity
            velocity-engine-core
            ${velocity.version}
        
        
        
            org.projectlombok
            lombok
        
        
        
            com.github.pagehelper
            pagehelper
            ${pagehelper.version}
        
        
        
            cn.hutool
            hutool-core
            ${hutool.version}
        
        
            cn.hutool
            hutool-json
            ${hutool.version}
        
        
        
            log4j
            log4j
            ${log4j.version}
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

3.2 配置文件中配置数据库和mybatis-plus信息,我用的是bootstrap.yml

server:
  port: 10001 # 服务端口号
spring:
  application:
    name: park-user-service # 服务名
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 # nacos注册中心地址
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/park-user?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    username: 用户名
    password: 密码
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 连接池
    druid:
      max-active: 20
      initial-size: 1
      min-idle: 3
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      test-while-idle: true
      test-on-borrow: true
      test-on-return: false
      filters: stat,wall,log4j
# mybatis-plus相关配置
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml # xml文件地址
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true # 开启驼峰映射
    cache-enabled: false # 全局关闭二级缓存
    call-setters-on-nulls: true

# dubbo配置
dubbo:
  protocol:
    port: 20881
    name: dubbo
  application:
    name: park-order-service

3.3 启动类上对mapper接口开启扫描,通过@MapperScan("com.xxx.xxx.mapper")

以上整合结束,下面是整个代码生成器!

4. 整合代码生成器mybatis-plus-generator

4.1 导入starter相关包,有两个核心包需要导入

        
        
            com.baomidou
            mybatis-plus-generator
            ${mybatis.plus.generator.version}
        
        
        
            org.apache.velocity
            velocity-engine-core
            ${velocity.version}
        

其中velocity-engine-core这个包是模板引擎,这个是mybatis-plus官方推荐的,如果更换模板引擎,需要在一会的类型变更,我就用了默认的模板引擎

4.2 在项目test/java/包下创建一个生成类对象Generator.java文件,代码如下:

package com.body.park.user;

import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
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.rules.NamingStrategy;
import org.apache.commons.lang3.StringUtils;

import java.util.Scanner;

/**
 * @Author james
 * @DATE 2022/3/26 17:10
 */
public class Generator {

    /**
     * 

* 读取控制台内容 *

*/ 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.isNotBlank(ipt)) { return ipt; } } throw new MybatisPlusException("请输入正确的" + tip + "!"); } public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); //获取工作目录跟路径,测试下来就是项目父级目录的文件路径,当前香炉的工作路径是:D:/bodyPark/park-user String projectPath = System.getProperty("user.dir"); //gc.setOutputDir 设置生成的文件输出目录,想将生成的文件存在在哪就设置什么路径 gc.setOutputDir(projectPath + "/park-user-service/src/main/resources"); //设置生成的类的作者 gc.setAuthor("xxx"); gc.setOpen(false); //关闭xml文件中配置二级缓存,默认是true 开启的,这个如果没有关闭的话,mapper.xml文件中就会开启二级缓存 gc.setEnableCache(false); mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://127.0.0.1:3306/park-user?useUnicode=true&useSSL=false&characterEncoding=utf8"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("密码"); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); scanner("数据库名称"); //这个不需要设置,不然会影响类的package pc.setModuleName(""); //类的包路径,moduleName如果设置的话,会将moduleName设置的值拼接在类名和parent之间 pc.setParent("com.body.park.user"); mpg.setPackageInfo(pc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel); strategy.setColumnNaming(NamingStrategy.underline_to_camel); strategy.setEntityLombokModel(true); strategy.setRestControllerStyle(true); strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); strategy.setControllerMappingHyphenStyle(true); strategy.setTablePrefix(pc.getModuleName() + "_"); mpg.setStrategy(strategy); mpg.execute(); } }

4.3 使用mybatis-plus-generator生成需要的类

  • 执行Generator.java类中的main方法
  • 输入数据库名称
  • 输入需要生成类的表明

4.4 效果如下

Spring cloud整合MyBatis-plus和mybatis-plus-generator_第1张图片

 在整个整合的过程中,肯定不是一次成功的,都是在一次次犯错,查资料,修改,调试之后,才总结出了一个适合自己的代码生成器。

你可能感兴趣的:(MySql,mysql)