在我们开发的过程中,首当其冲的就是要搭建一个脚手架来解决底层的数据库层的交互。好的脚手架能够在我们开发过程中省去很多时间。以Mybatis-plus为例,记录一下整个搭建过程。 官方链接:baomidou.com/
pom
<!-- mybatis plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<scope>test</scope>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<scope>test</scope>
<version>3.7.0.RELEASE</version>
</dependency>
configuration
@Configuration
@MapperScan({"com.xxx.xxx.**.mapper"})
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
代码生成器,生成entity、server、impl、mapper
package com.xxx.xxx;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.engine.BeetlTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Property;
import java.sql.SQLException;
import java.util.Collections;
/**
* Mybatis plus 自动代码生成
*/
public class MyBatisAutoGeneratorTest {
/**
* 数据源配置
*/
private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG =
new DataSourceConfig.Builder(
"jdbc:mysql://192.168.2.100:30331/db_name?serverTimezone=UTC",
"username",
"password");
/**
* 执行 run
*/
public static void main(String[] args) throws SQLException {
FastAutoGenerator.create(DATA_SOURCE_CONFIG)
// 全局配置
.globalConfig(
(scanner, builder) ->
builder
.author("Felix")
.disableOpenDir()
.fileOverride()
.outputDir(
System.getProperty("user.dir")
+ "\src\main\java"))
// 包配置
.packageConfig(
(scanner, builder) ->
builder
.parent("com.xxx.xxx")
.pathInfo(
Collections.singletonMap(
OutputFile.mapperXml,
System.getProperty("user.dir")
+ "\src\main\resources\mapper"))
.build())
// 策略配置
.strategyConfig(
builder ->
builder.addInclude(
// "t_apply_info"
).addTablePrefix("t_")
// .addInclude("laboratory_sheet_template")
// .addInclude("laboratory_sheet_details")
// .addInclude("laboratory_sheet")
// .addInclude("operating_record")
.entityBuilder()
.idType(IdType.ASSIGN_ID)
.logicDeletePropertyName("deleteFlag")
.addTableFills(new Property("createTime", FieldFill.INSERT))
.addTableFills(new Property("dbUpdateTime", FieldFill.INSERT_UPDATE))
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
// .formatFileName("%sDO")
.build())
.templateConfig(
builder ->
builder.disable(
TemplateType.CONTROLLER))
.templateEngine(new BeetlTemplateEngine())
.execute();
}
}
service
import com.baomidou.mybatisplus.extension.service.IService;
import com.xxx.xxx.entity.ApplyInfo;
/**
* <p>
* 申请单表 服务类
*/
public interface ApplyInfoService extends IService<ApplyInfo> {
}
service.impl
package com.xxx.xxx.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxx.xxxx.entity.ApplyInfo;
import com.xxxx.xxxx.mapper.ApplyInfoMapper;
import com.xxxx.xxxx.service.ApplyInfoService;
import org.springframework.stereotype.Service;
/**
* <p>
* 申请单表 服务实现类
*/
@Service
public class ApplyInfoServiceImpl extends ServiceImpl<ApplyInfoMapper, ApplyInfo> implements ApplyInfoService {
}
mapper
package com.xxxx.xxxx.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xxxx.xxxx.entity.ApplyInfo;
/**
* <p>
* 申请单表 Mapper 接口
*/
public interface ApplyInfoMapper extends BaseMapper<ApplyInfo> {
}