欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot集成mybaits-generator自動生成代碼的流程分析

 更新時間:2025年04月17日 09:27:06   作者:冉成未來  
這篇文章主要介紹了springboot集成mybaits-generator自動生成代碼的流程分析,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,感興趣的朋友一起看看吧

概述

創(chuàng)建springboot項目,在這里使用的是springboot 2.6.13版本,引入的項目依賴包如pom文件所寫,jdk使用1.8,集成swagger。

創(chuàng)建springboot項目

使用start.aliyun.com創(chuàng)建springboot項目

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.rc</groupId>
    <artifactId>generator-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>generator-demo</name>
    <description>generator-demo</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>
    <dependencies>
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--springboot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--mysql連接驅(qū)動-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <!--lombok類-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <!--druid數(shù)據(jù)源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.20</version>
        </dependency>
        <!--swagger-->
        <dependency>
            <groupId>com.spring4all</groupId>
            <artifactId>swagger-spring-boot-starter</artifactId>
            <version>1.9.1.RELEASE</version>
        </dependency>
        <!--熱啟動-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <!--mybatis-plus代碼生成-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!--freemarker模板引擎-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>
        <!--lang3工具類-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <!--測試-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.rc.GeneratorDemoApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

使用mybatis-plus-generator時需要注意版本號,本項目使用的是3.4.0版本

aplication.yml

server:
  port: 8096
  servlet:
    context-path: /
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/you_table?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
    username: root
    password: root

代碼生成類

public class CodeGenerator {
    public static String tables = "user";  //需要自動生成代碼的表,以英文逗號隔開
    public static void main(String[] args) {
        //代碼生成器對象
        AutoGenerator autoGenerator = new AutoGenerator();
        //全局配置
        GlobalConfig gc = new GlobalConfig();
        //獲取項目目錄
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath+"/src/main/java");
        gc.setAuthor("rc");
        gc.setOpen(false);
        gc.setServiceName("%sService");
        autoGenerator.setGlobalConfig(gc);
        //數(shù)據(jù)源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://192.168.1.229:3306/rcdb?useUnicode=true&useSSL=false&characterEncoding=utf-8&serverTimezone=UTC");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("wangcheng");
        autoGenerator.setDataSource(dsc);
        //包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName(null);
        pc.setParent("com.rc");
        autoGenerator.setPackageInfo(pc);
        //自定義配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
            }
        };
        //模板引擎是freemarker
        String templatePath = "/template/mapper.xml.ftl";
        //模版引擎是velocity
        //String templatePath = "/template/mapper.xml.vm";
        List<FileOutConfig> focList = new ArrayList<>();
        //需要生成*mapper.xml時需要配置
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                return projectPath+"/src/main/resources/mapper/" + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        autoGenerator.setCfg(cfg);
        //配置模板
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setController("template/Controller.java");
        templateConfig.setXml(null);
        autoGenerator.setTemplate(templateConfig);
        //策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setEntityLombokModel(true);
        strategyConfig.setRestControllerStyle(true);
        strategyConfig.setInclude(tables.split(","));
        strategyConfig.setControllerMappingHyphenStyle(true);
        strategyConfig.setTablePrefix("m_");
        autoGenerator.setStrategy(strategyConfig);
        autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
        autoGenerator.execute();
    }
}

mybatis-plus提供的變量

{
    "date": "2018-10-30",
    "superServiceImplClassPackage": "com.baomidou.mybatisplus.extension.service.impl.ServiceImpl",
    "baseResultMap": true,
    "superMapperClass": "BaseMapper",
    "activeRecord": true,
    "superServiceClass": "IService",
    "superServiceImplClass": "ServiceImpl",
    "table": {
        "comment": "表備注",
        "commonFields": [],
        "controllerName": "AirStatLiveDataController",
        "convert": false,
        "entityName": "AirStatLiveData",
        "entityPath": "airStatLiveData",
        "fieldNames": "table_id, citycode, cityname, createtime, time, info, devid, stationname, aqi, pm25, pm10, co, so2, no2, o3, prkey",
        "fields": [{
            "capitalName": "TableId",
            "columnType": "LONG",
            "comment": "表單id",
            "convert": false,
            "keyFlag": true,
            "keyIdentityFlag": true,
            "name": "table_id",
            "propertyName": "tableId",
            "propertyType": "Long",
            "type": "bigint(20)"
        }...],
        "importPackages": ["com.baomidou.mybatisplus.annotation.IdType", "com.baomidou.mybatisplus.extension.activerecord.Model", "com.baomidou.mybatisplus.annotation.TableId", "java.io.Serializable"],
        "mapperName": "xxxMapper",
        "name": "tableName",
        "serviceImplName": "xxxServiceImpl",
        "serviceName": "xxxService",
        "xmlName": "xxxMapper"
    },
    "package": {
        "Entity": "com.cy.entity",
        "Mapper": "com.cy.mapper",
        "Xml": "com.cy.mapper",
        "ServiceImpl": "com.cy.service.impl",
        "Service": "com.cy.service",
        "Controller": "com.cy.controller"
    },
    "author": "author",
    "swagger2": false,
    "baseColumnList": false,
    "kotlin": false,
    "entityLombokModel": false,
    "superMapperClassPackage": "com.baomidou.mybatisplus.core.mapper.BaseMapper",
    "restControllerStyle": false,
    "entityBuilderModel": true,
    "superServiceClassPackage": "com.baomidou.mybatisplus.extension.service.IService",
    "entityBooleanColumnRemoveIsPrefix": false,
    "entityColumnConstant": false,
    "config": {
        "globalConfig": {
            "activeRecord": true,
            "author": "author",
            "baseColumnList": false,
            "baseResultMap": true,
            "controllerName": "%sController",
            "dateType": "TIME_PACK",
            "enableCache": false,
            "fileOverride": false,
            "kotlin": false,
            "mapperName": "%sMapper",
            "open": false,
            "outputDir": "",
            "serviceImplName": "%sServiceImpl",
            "serviceName": "%sService",
            "swagger2": false,
            "xmlName": "%sMapper"
        },
        "packageInfo": {
            "$ref": "$.package"
        },
        "pathInfo": {
            "entity_path": "",
            "controller_path": "",
            "xml_path": "",
            "service_path": "",
            "mapper_path": "",
            "service_impl_path": ""
        },
        "strategyConfig": {
            "capitalMode": false,
            "columnNaming": "underline_to_camel",
            "controllerMappingHyphenStyle": false,
            "entityBooleanColumnRemoveIsPrefix": false,
            "entityBuilderModel": true,
            "entityColumnConstant": false,
            "entityLombokModel": false,
            "entityTableFieldAnnotationEnable": false,
            "include": ["air_stat_live_data"],
            "naming": "underline_to_camel",
            "restControllerStyle": false,
            "skipView": false,
            "superMapperClass": "com.baomidou.mybatisplus.core.mapper.BaseMapper",
            "superServiceClass": "com.baomidou.mybatisplus.extension.service.IService",
            "superServiceImplClass": "com.baomidou.mybatisplus.extension.service.impl.ServiceImpl"
        },
        "superMapperClass": "com.baomidou.mybatisplus.core.mapper.BaseMapper",
        "superServiceClass": "com.baomidou.mybatisplus.extension.service.IService",
        "superServiceImplClass": "com.baomidou.mybatisplus.extension.service.impl.ServiceImpl",
        "tableInfoList": [{
            "$ref": "$.table"
        }],
        "template": {
            "controller": "/templates/controller.java",
            "mapper": "/templates/mapper.java",
            "service": "/templates/service.java",
            "serviceImpl": "/templates/serviceImpl.java",
            "xml": "/templates/mapper.xml"
        }
    },
    "enableCache": false,
    "entity": "AirStatLiveData"
}

模板中的動態(tài)數(shù)據(jù)可以根據(jù)mybatis-plus提供的變量進行填充

controller模板

Controller.java.ftl

package ${package.Controller};
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import ${package.Entity}.${entity};
import ${package.Service}.${table.serviceName};
import com.rc.entity.web.PageParam;
import com.rc.entity.web.Result;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@Api(tags="$(table.comment)")
@RequestMapping("/${entity?uncap_first}")
public class ${entity}Controller {
    @Autowired
    private ${table.serviceName} ${entity?uncap_first}Service;
    /**
    * 根據(jù)id獲取對象
    * @param id
    * @return
    */
    @GetMapping("/{id}")
    public ${entity} getById(@PathVariable Long id) {
        return ${entity?uncap_first}Service.getById(id);
    }
    /**
    * 分頁查詢
    * @param pageParam
    * @return
    */
    @PostMapping("/queryByPage")
    public Result queryUserByPage(PageParam pageParam){
        QueryWrapper<${entity}> ${entity?uncap_first}QueryWrapper = new QueryWrapper<>();
        Map<String, String> queryMap = pageParam.getQueryMap();
        if (StringUtils.isNotBlank(queryMap.get("id"))){
            ${entity?uncap_first}QueryWrapper.like("id",queryMap.get("id"));
        }
        Page<${entity}> ${entity?uncap_first}Page = ${entity?uncap_first}Service.page(new Page<>(pageParam.getCurrentPage(), pageParam.getPageSize()), ${entity?uncap_first}QueryWrapper);
        return Result.SUCCESS(${entity?uncap_first}Page);
    }
}

mapper模板

mapper.xml.ftl

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package.Mapper}.${table.mapperName}">
</mapper>

總結(jié)

通過繼承mybaits-generotar可以快速根據(jù)表生成后端代碼,簡化開發(fā),開發(fā)過程中只需要專注于開發(fā)業(yè)務(wù)邏輯的梳理。
項目地址:https://gitee.com/wangcheng626/generator-demo.git

到此這篇關(guān)于springboot集成mybaits-generator自動生成代碼的文章就介紹到這了,更多相關(guān)springboot集成mybaits-generator內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析Java設(shè)計模式編程中的單例模式和簡單工廠模式

    淺析Java設(shè)計模式編程中的單例模式和簡單工廠模式

    這篇文章主要介紹了淺析Java設(shè)計模式編程中的單例模式和簡單工廠模式,使用設(shè)計模式編寫代碼有利于團隊協(xié)作時程序的維護,需要的朋友可以參考下
    2016-01-01
  • Spring發(fā)送郵件如何內(nèi)嵌圖片增加附件

    Spring發(fā)送郵件如何內(nèi)嵌圖片增加附件

    這篇文章主要介紹了Spring發(fā)送郵件如何內(nèi)嵌圖片增加附件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Mybatis配置返回為修改影響條數(shù)方式

    Mybatis配置返回為修改影響條數(shù)方式

    這篇文章主要介紹了Mybatis配置返回為修改影響條數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 解決@Scheduled定時器使用@Thransactional事物問題

    解決@Scheduled定時器使用@Thransactional事物問題

    這篇文章主要介紹了解決@Scheduled定時器使用@Thransactional事物問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • springboot整合mybatis-plus基于注解實現(xiàn)一對一(一對多)查詢功能

    springboot整合mybatis-plus基于注解實現(xiàn)一對一(一對多)查詢功能

    這篇文章主要介紹了springboot整合mybatis-plus基于純注解實現(xiàn)一對一(一對多)查詢功能,因為本人采用的是spring-boot進行開發(fā),本身springboot就提倡采用不用配置自動配置的方式,所以真心希望mybatis(不是mybatis-plus)這點需要繼續(xù)努力
    2021-09-09
  • 工廠方法在Spring框架中的運用

    工廠方法在Spring框架中的運用

    這篇文章介紹了工廠方法在Spring框架中的運用,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • 如何基于java或js獲取URL返回狀態(tài)碼

    如何基于java或js獲取URL返回狀態(tài)碼

    這篇文章主要介紹了如何基于java或js獲取URL返回狀態(tài)碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java批量導(dǎo)入Excel數(shù)據(jù)超詳細實例

    java批量導(dǎo)入Excel數(shù)據(jù)超詳細實例

    這篇文章主要給大家介紹了關(guān)于java批量導(dǎo)入Excel數(shù)據(jù)的相關(guān)資料,EXCEL導(dǎo)入就是文件導(dǎo)入,操作代碼是一樣的,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2023-08-08
  • SpringMVC?bean加載控制的實現(xiàn)分析

    SpringMVC?bean加載控制的實現(xiàn)分析

    SpringMVC是一種基于Java,實現(xiàn)了Web?MVC設(shè)計模式,請求驅(qū)動類型的輕量級Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進行職責(zé)解耦?;谡埱篁?qū)動指的就是使用請求-響應(yīng)模型,框架的目的就是幫助我們簡化開發(fā),SpringMVC也是要簡化我們?nèi)粘eb開發(fā)
    2023-02-02
  • idea克隆maven項目的方法步驟(圖文)

    idea克隆maven項目的方法步驟(圖文)

    這篇文章主要介紹了idea克隆maven項目的方法步驟(圖文),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論