Mybatis-plus 脚手架

127 阅读1分钟

在我们开发的过程中,首当其冲的就是要搭建一个脚手架来解决底层的数据库层的交互。好的脚手架能够在我们开发过程中省去很多时间。以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> {

}