SpringBoot Mybatis-plus 自动生成数据库相关代码

一、

1、先建立一个项目。

SpringBoot Mybatis-plus 自动生成数据库相关代码_第1张图片

 

2、pom文件的引用。


    2.1.9
    5.1.47



    com.baomidou
    mybatis-plus-boot-starter
    ${mybatis-plus-boot-starter.version}


    mysql
    mysql-connector-java
    ${mysql.version}
    compile

3、建立数据库及表。

SpringBoot Mybatis-plus 自动生成数据库相关代码_第2张图片

4、java代码。将代码中的常量进行替换,就可以直接生成代码了。表名要是多个单词组成,建议用下划线分隔。

import com.baomidou.mybatisplus.enums.IdType;
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.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CodeGenerator {
    private static final String driverName = "com.mysql.jdbc.Driver";
    private static final String url = "jdbc:mysql://localhost:3306/zxj_sql";
    private static final String user = "root";
    private static final String password = "123456";
    private static final String[] tableName = {"eco_reptile_good", "eco_reptile_shop", "eco_good_info"};
    private static final String packageName = "com.zxj.reptile.module.ecommerce";
    private static final String author = "zxj";

    private static final String entitySuperPackageName = "com.zxj.reptile.module.AbstractEntity";
    private static final String[] entityColumns = {"id"};

    public static void main(String[] args) {
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig
                .setDbType(DbType.MYSQL)
                .setUrl(url)
                .setUsername(user)
                .setPassword(password)
                .setDriverName(driverName);
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig
                .setSuperEntityClass(entitySuperPackageName)
                .setSuperEntityColumns(entityColumns)
                .setCapitalMode(true)
                .setEntityLombokModel(false)
                .setDbColumnUnderline(true)
                .setNaming(NamingStrategy.underline_to_camel)
                .setInclude(tableName);//修改替换成你需要的表名,多个表名传数组
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig
                .setActiveRecord(false)
                .setEnableCache(false)//是否开启二级缓存
                .setIdType(IdType.ID_WORKER_STR)
                .setAuthor(author)
                .setOutputDir("c:\\cn")
                .setFileOverride(true)
                .setServiceName("I%sService");//user -> IUserService, 设置成true: user -> IUserService
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator
                .setGlobalConfig(globalConfig)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(
                        new PackageConfig()
                                .setParent(packageName)
                                .setController("controller")
                                .setEntity("entity")
                ).execute();
    }
}

5、自动生成的代码。

SpringBoot Mybatis-plus 自动生成数据库相关代码_第3张图片

import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import java.io.Serializable;

/**
 * 

* *

* * @author zxj * @since 2019-09-25 */ public class Demo implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.ID_WORKER_STR) private String id; private String content; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } @Override public String toString() { return "Demo{" + ", id=" + id + ", content=" + content + "}"; } }

6、目录结构总览。

SpringBoot Mybatis-plus 自动生成数据库相关代码_第4张图片

 

7、关于mapper包扫描不到的解决方法。

    第一种是在位于zxj-reptile-api子模块下的ApiApplication.java中添加@MapperScan注解。

package com.zxj.reptile;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableTransactionManagement
@SpringBootApplication
@MapperScan("com.zxj.reptile.module.*.mapper")
@EnableSwagger2
public class ApiApplication {
    public static void main(String[] args) {
        SpringApplication.run(ApiApplication.class, args);
    }
}

第二种是在位于zxj-reptile-manage子模块下的DemoMapper.java中添加@Mapper注解

@Mapper
public interface DemoMapper extends BaseMapper {

}

 

二、

1、我们如果对自动生成的主键id不满意的话,也可以通过创建一个父类,来对id进行统一的规划。首先创建一个父类。

package com.zxj.reptile.module;

import com.baomidou.mybatisplus.annotations.TableId;

import java.io.Serializable;
import java.util.UUID;

public abstract class AbstractEntity implements Serializable {
    @TableId(value = "id")
    private String id;

    public String getId() {
        if (id == null || id.isEmpty()) {
            this.id = UUID.randomUUID().toString().replaceAll("-", "");
        }
        return this.id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

 

2、在代码生成器CodeGenerator中添加几行代码,并在main方法中修改StrategyConfig。

private static final String entitySuperPackageName = "com.zxj.reptile.module.AbstractEntity";
private static final String[] entityColumns = {"id"};
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
        .setSuperEntityClass(entitySuperPackageName)
        .setSuperEntityColumns(entityColumns)
        .setCapitalMode(true)
        .setEntityLombokModel(false)
        .setDbColumnUnderline(true)
        .setNaming(NamingStrategy.underline_to_camel)
        .setInclude(tableName);//修改替换成你需要的表名,多个表名传数组

3、现在来看看自动生成的代码,除了entity不一样,剩下的都一样。

import com.zxj.reptile.module.AbstractEntity;

/**
 * 

* *

* * @author zxj * @since 2019-09-25 */ public class Demo extends AbstractEntity { private static final long serialVersionUID = 1L; private String content; public String getContent() { return content; } public void setContent(String content) { this.content = content; } @Override public String toString() { return "Demo{" + ", content=" + content + "}"; } }

 

有任何问题,欢迎下方留言。

你可能感兴趣的:(SpringBoot)