SpringBoot整合Mybatis

70 阅读1分钟

1,建项目

image.png

2,导pom

<!-- mybatis-plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>
<!-- mybatis-plus-generator -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.2</version>
</dependency>

3,新建配置类

/**
 * MyBatisPlus配置类
 * Created by xybian on 2023/2/7.
 */
@Configuration
public class MybatisPlusConfig {

    /**
     * 分页插件
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

4,添加数据源配置

spring:
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/mall_tiny?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
      username: root
      password: 12345
      driver-class-name: com.mysql.cj.jdbc.Driver

#mybatis plus 设置
mybatis-plus:
  mapper-locations: classpath:/mybatis/*Mapper.xml
  global-config:
    db-config:
      id-type: auto
  configuration:
    auto-mapping-behavior: partial
    map-underscore-to-camel-case: true

5,新建代码生成器配置

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;

import java.util.Scanner;

/**
 * MyBatisPlus代码生成器
 * Created by macro on 2020/8/20.
 */
public class MyBatisPlusGenerator {

    /**
     * <p>
     * 读取控制台内容
     * </p>
     */
    public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help.toString());
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotEmpty(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }

    public static void main(String[] args) {
        //获取程序当前路径
        String projectPath =  System.getProperty("user.dir");
//        String projectPath = "D:\java测试目录";
        // 数据源配置
        String dbUrl = "jdbc:mysql://localhost:3306/mall_tiny?characterEncoding=UTF-8&useUnicode=true&useSSL=false";
        DataSourceConfig.Builder dataSourceConfig = new DataSourceConfig.Builder(dbUrl,"root","12345")
                .dbQuery(new MySqlQuery())
                .typeConvert(new MySqlTypeConvert())
                .keyWordsHandler(new MySqlKeyWordsHandler());

        // 代码生成器
        FastAutoGenerator mpg = FastAutoGenerator.create(dataSourceConfig);
        mpg.globalConfig(globalBuilder -> globalBuilder.fileOverride().disableOpenDir()
                .outputDir(projectPath + "/src/main/java")
                .author("")
                .commentDate("yyyy-MM-dd HH:mm:ss")
                .dateType(DateType.TIME_PACK)
                .enableSwagger());
        mpg.packageConfig(packageBuilder -> packageBuilder
                .parent("com.xybian.mall.tiny")
                .service("services")
                .serviceImpl("services.impl")
                .xml("mybatis")
        );



        mpg.strategyConfig(strategyconfigBuilder -> strategyconfigBuilder
                .enableCapitalMode()
                .enableSkipView ()
                .disableSqlFilter()
                .addInclude(scanner("表名"))
        );



        //entity 生成策略
        mpg.strategyConfig(strategyconfigBuilder -> strategyconfigBuilder.entityBuilder()
//                      .enableTableFieldAnnotation ()
                        .naming (NamingStrategy.underline_to_camel)
                        .columnNaming (NamingStrategy.underline_to_camel)
                        .idType(IdType.AUTO)
//                      .enableLombok ()
                        /*.logicDeleteColumnName ( "deleted ").logicDeletePropertyName ( "deleted ")
                        .addTableFills(new Column( "create_time" , FieldFill.INSERT))
                        .addTableFills(new Property( "updateTime " ,FieldFill.INSERT_UPDATE))*/
                        .versionColumnName ("version")
                        .disableSerialVersionUID()
        );

        //controller 生成策略
        mpg.strategyConfig(
                strategyconfigBuilder ->strategyconfigBuilder
                        .controllerBuilder()
                        .enableRestStyle()
                        .enableHyphenStyle()
        );


        //service 生成策略
        mpg.strategyConfig(
                strategyconfigBuilder -> strategyconfigBuilder
                        .serviceBuilder()
                        .formatServiceFileName ("%sService")
                        .formatServiceImplFileName ("%sServiceImpl"));

        //mapper 生成策略
        mpg.strategyConfig (
                strategyconfigBuilder ->strategyconfigBuilder.mapperBuilder()
                        .formatMapperFileName ("%sMapper")
                        .formatXmlFileName ( "%sMapper" )
                        .enableBaseResultMap());

        mpg.execute();
    }
}

6,启动代码生成器,自动生成代码

image.png

7,在测试类中,进行测试

@Autowired
private UmsAdminService umsAdminService;

@Test
void contextLoads() {

    for (UmsAdmin umsAdmin : umsAdminService.list()) {

        System.out.println(umsAdmin);
    }
}

8,结果

image.png

注: 若报,类找不到异常,就在启动类中添加MapperScan。

image.png