有了Mybatis-Plus,还要我这个fw干嘛?
程序员文章站
2022-03-26 16:51:59
...
小伙伴们,有没有这样一个体验,每次开始写一个项目时,搭建项目环境,建entity,mapper,service,controller层文件的感到繁琐,这属实体力活呀!然而,自从有了Mybatis-Plus,自动生成代码,公司就再也不需要我这个fw了,哭唧唧~~
所以我们一起来看看这个自动代码生成器是怎么弄得吧~
pom.xml: 引入依赖
<dependencies>
<!--引入mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!--velocity模板引擎 mybatis-plus 代码生成器需要-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
application.yml: 配置好数据库及其他
#连接数据库
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql:///mybatis-plus?characterEncoding=UTF-8&serverTimezone=GMT%2b8
driver-class-name: com.mysql.cj.jdbc.Driver
#控制台打印sql语句
logging:
level:
com.baidu.mybatisplus.mapper: debug
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0
config/MybatisPlusConfig: 先配置好你想要的的MybatisPlus的组件
@EnableTransactionManagement
@Configuration
@MapperScan("com.baidu.mybatisplus.mapper")
public class MybatisPlusConfig {
//分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
//逻辑删除组件
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
}
test/MyGenerator: 在测试包下配置代码生成器的类了
//代码自动生成器
public class MyGenerator {
public static void main(String[] args) {
//需要构建一个 代码自动生成器 对象
AutoGenerator mpg = new AutoGenerator();
//1.全局配置
GlobalConfig gc = new GlobalConfig();
String subjectPath = System.getProperty("user.dir");//获取项目路径
gc.setOutputDir(subjectPath+"/src/main/java");//设置生成路径
gc.setAuthor("徐浩");
gc.setOpen(false);
gc.setFileOverride(false); //是否覆盖
gc.setServiceName("%sService"); //去Service的I前缀
gc.setIdType(IdType.ID_WORKER);
gc.setDateType(DateType.ONLY_DATE);
mpg.setGlobalConfig(gc);
//2.设置数据源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUsername("root");
dsc.setPassword("123456");
dsc.setUrl("jdbc:mysql:///mybatis-plus?characterEncoding=UTF-8&serverTimezone=GMT%2b8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
//3.包的配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("generator");
pc.setParent("com.baidu.mybatisplus");
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
//4.策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("user"); //设置要映射的表
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);//自动lombok
strategy.setLogicDeleteFieldName("deleted"); //逻辑删除
//自动填充配置
TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
TableFill updateTime = new TableFill("update_time", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(createTime);
tableFills.add(updateTime);
strategy.setTableFillList(tableFills);
mpg.setStrategy(strategy);
mpg.execute(); //执行
}
}
- strategy.setInclude(“user”):你想映射数据库哪个表就设置那个表,还可以传入多个表一次生成strategy.setInclude(“user”,“dept”)
生成后的代码比你写的还规范!