SpringBoot整合mybatis-plus,pagehelper以及程式碼自動生成

御風只為飛翔發表於2020-11-09

引入依賴

下面兩個依賴如果只引入上面的那一個,專案啟動後會自動停止

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

lombok作為可以簡寫程式碼,以及對應的junit-test,這兩個可以不用引入

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </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>

 連線資料庫mysql的依賴

 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- mybatis plus與其 程式碼生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.0</version>
        </dependency>

        <!--mybatis-plus分頁-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.10</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis-spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


        <!--模板引擎程式碼生成需要的thymeleaf和velocity引入其中一個也可以,看生成需要哪個模板就引入哪個-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <exclusions><!-- 去掉springboot預設配置 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

application.yml配置檔案

mapper-locations: classpath:mapper/*.xml 是找到xml檔案的位置

server:
  port: 8080


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://106.13.56.181:3306/xfly?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC&useSSL=false
    username: root
    password: AAA@1111
mybatis-plus:
  config-location:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #列印sql
  mapper-locations: classpath:mapper/*.xml
logging:
  level:
    com.haocheng.study.springboot.mybatisplus: debug



pagehelper:
  # 指定使用的資料庫資料庫
  helperDialect: mysql
  # reasonable:分頁合理化引數,預設值為false。當該引數設定為 true 時,pageNum<=0 時會查詢第一頁, 		pageNum>pages(超過總數時),會查詢最後一頁。預設false 時,直接根據引數進行查詢。
  reasonable: true

啟動類上面加註解

@MapperScan("com.yufeng.mybatisplus.mapper")對應mapper.java檔案的位置,這樣可以避免在每個mapper.java檔案上加@Mapper註解

@SpringBootApplication
@MapperScan("com.yufeng.mybatisplus.mapper")
public class XflyMybatisplusApplication {

    public static void main(String[] args) {
        SpringApplication.run(XflyMybatisplusApplication.class, args);
    }

}

對應的程式碼自動生成

package com.yufeng.mybatisplus.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: guxx
 * @Description:
 * @Date: 2020/7/17 17:16
 * @Version: 1.0
 */
public class MybatisAutoGenerator {

    public static void main(String[] args) {
        // 程式碼生成器
        AutoGenerator mpg = new AutoGenerator();


        // TODO 這裡需要完善程式碼生成之後存放的module路徑
        String projectPath = System.getProperty("user.dir")+"/mybatisplus";

        // 全域性配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOpen(false); //是否自動開啟資料夾
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setFileOverride(false);//檔案是否需要覆蓋
        gc.setActiveRecord(true);//不需要ActiveRecord特性的請改為false
        gc.setEnableCache(false);//XML二級快取
        gc.setBaseResultMap(true);//XML ResultMap
        gc.setBaseColumnList(true);//XML columList
        gc.setAuthor("yufeng");//作者
//        gc.setSwagger2(true);

        //自定義檔案命名,注意%s 會自動填充表實體屬性
        gc.setControllerName("%sController");
        gc.setServiceName("I%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setMapperName("%sMapper");
        gc.setXmlName("%sMapper");

        mpg.setGlobalConfig(gc);

        // 資料來源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://106.13.56.181:3306/xfly?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC&useSSL=false");
        // dsc.setSchemaName("public");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("AAA@1111");
        dsc.setSchemaName("yufeng");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);


        //包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.yufeng.mybatisplus");
        pc.setController("controller");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        pc.setMapper("mapper");
        pc.setEntity("entity");
        mpg.setPackageInfo(pc);


        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();
        //不生成如下型別模板 設定成null即可
//        templateConfig.setController(null);
//        templateConfig.setService(null);
//        templateConfig.setServiceImpl(null);
//        templateConfig.setMapper(null);
        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

         如果模板引擎是 freemarker
        //String templatePath = "/templates/mapper.xml.ftl";
        //如果模板引擎是 velocity
        String mapperXmlPath = "/templates/mapper.xml.vm";


        // 自定義配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        // 自定義輸出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定義配置優先於預設配置生效

        focList.add(new FileOutConfig(mapperXmlPath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定義xml 檔名和生成路徑
                return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);

        String[] t1 = new String[]{"sys_user"}; // TODO


        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);
        strategy.setInclude(t1);//需要生成的表
        mpg.setStrategy(strategy);

        mpg.execute();
    }

}

 

參考部落格

https://blog.csdn.net/qq_42536773/article/details/104352352

https://www.cnblogs.com/liuyj-top/p/12976396.html

https://blog.csdn.net/mango_hc/article/details/103564590

https://blog.csdn.net/qq_33247435/article/details/99675154

 

目前還有的問題:

程式碼生成對應的module目錄

以及mapper.xml檔案裡面內容的路徑有誤

 

程式碼地址

https://gitee.com/Freegxx/xfly

相關文章