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、建立数据库及表。
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、自动生成的代码。
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、目录结构总览。
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 +
"}";
}
}