mybatis plus自动生成器解析(及遇到的坑)

目录
  • mybatisplus自动生成器解析
    • 1.加入依赖
    • 2.写一个类,作为自动生成器的入口
    • 3.修改代码
    • 3.运行
    • 讲解一下
  • mybatisplus代码生成器使用及注意事项
    • 1.添加maven依赖
    • 2.编写代码生成器的类
    • 3.自定义输出模板
    • 4.自定义参数模板
    • 5.关于日志输出
    • 6.关于字段类型转换

mybatis plus自动生成器解析

使用这个可以超快速生成entity service controller层

1.加入依赖

模板引擎的依赖也要导入,不然运行会报错的

<dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.3.1.tmp</version>
    </dependency>
    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.30</version>
    </dependency>

2.写一个类,作为自动生成器的入口

这里复制代码的时候,一定一定要把import的包也复制,不然很容易出错

package van.generator;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
/**
 * @author Van
 * @date 2020/5/1 - 15:43
 */
public class CodeGenerator {
    /**
     * <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 + "!");
    }
    /**
     * RUN THIS
     */
    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/ad-sponsor/src/main/java/van");
        gc.setAuthor("van");
        gc.setOpen(false);
        mpg.setGlobalConfig(gc);
        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/ad?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
        // dsc.setSchemaName("public");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("321asd");
        mpg.setDataSource(dsc);
        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName(scanner("模块名"));
        pc.setParent("com.baomidou.mybatisplus.samples.generator");
        mpg.setPackageInfo(pc);
        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        List<FileOutConfig> focList = new ArrayList<>();
        focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输入文件名称
                return projectPath + "/mybatis-plus-sample-generator/src/main/resources/mapper/" + pc.getModuleName()
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);
        mpg.setTemplate(new TemplateConfig().setXml(null));
        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setSuperEntityClass("com.baomidou.mybatisplus.samples.generator.common.BaseEntity");
        strategy.setEntityLombokModel(true);
        strategy.setSuperControllerClass("com.baomidou.mybatisplus.samples.generator.common.BaseController");
        strategy.setInclude(scanner("表名"));
        strategy.setSuperEntityColumns("id");
        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(strategy);
        // 选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有!
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    }
}

3.修改代码

1.全局配置

2.数据源配置

3.包配置

3.运行

讲解一下

1.首先运行这里

要求输入的模块名是生成的entity等的上层包名,我这里输入的是sys如上图所示

2.全局配置这里

是指定要生成的地方(模块名)

3.数据源配置没啥说的,填入正确信息即可

4.包配置

mybatis plus代码生成器使用及注意事项

Mybatis-plus的代码生成器是mybatis-plus组件的,并不是mybatis的,注意不要看错,这里会介绍代码生成器的主要用法以及需要注意的事项。

1.添加maven依赖

Mybatis-plus的代码生成器在3.0.3之后就独立出来,与mybatis-plus分开了,所以使用高版本的mybatis-plus的同学要注意,代码生成器要单独引入,如果是使用低版本的,不需要额外引用,这里使用的是按照官方文档的3.1.2版本,

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.code.generator</groupId>
    <artifactId>code-generator</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.1.2</version>
        </dependency>  

        <!-- velocity 模板引擎, 默认 -->
        <!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity-engine-core -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency> 

        <!-- freemarker 模板引擎 -->
        <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>oracle.jdbc</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.2.0</version>
        </dependency> 

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.20.RELEASE</version>
        </dependency> 

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
            <scope>compile</scope>
        </dependency> 

    </dependencies>
</project>

2.编写代码生成器的类

依赖好了之后就可以开始编写我们的代码生成器,代码生成器主要有几部分的配置,具体配置的说明参考代码注释

(1)全局配置

(2)包名配置

(3)数据源配置

(4)输出模板

(5)自定义配置

(6)生成策略

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.HashMap;
import java.util.List;
import java.util.Map; 

public class CodeGenerator {
    public static void main(String[] args) {
        AutoGenerator mpg = new AutoGenerator();

        /**
         * 全局配置,常用
         * 1.配置文件输出的路径OutputDir
         * 2.设置是否每次覆盖文件FileOverride
         * 3.mybatis的xml配置,如二级缓存,是否生成resultMap映射,是否生成columnlist的sql,这里没有使用xml,所以注释掉
         * 4.设置作者、是否使用swagger2等全局变量,其他变量参考官方文档
         * 5.自定义文件命名,%s是占位符,会将实体名替换进去
         */
        final GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir("E://output");//输出文件路径
        gc.setFileOverride(true);
        gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
        //gc.setEnableCache(false);// XML 二级缓存
        //gc.setBaseResultMap(true);// XML ResultMap
        //gc.setBaseColumnList(false);// XML columList
        gc.setAuthor("simple");// 作者
		gc.setSwagger2(true);

        // 自定义文件命名,注意 %s 会自动填充表实体属性!
        gc.setControllerName("%sController");
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setMapperName("%sMapper");
        mpg.setGlobalConfig(gc);

        /**
         * 包的配置,主要设置每一层的包名
         */
        final PackageConfig pc = new PackageConfig();
        //设置包名
        pc.setParent("com.code.generator");
        pc.setController("system.web");
        pc.setService("system.service");
        pc.setServiceImpl("system.service.impl");
        pc.setMapper("system.mapper");
        pc.setEntity("domain.po");
        mpg.setPackageInfo(pc);

        /**
         * 数据源配置,mybatis支持的数据库这里都支持
         */
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.ORACLE);
        dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
		//TODO
        dsc.setUsername("user");
		//TODO
        dsc.setPassword("password");
		//TODO
        dsc.setUrl("jdbc:oracle:thin:@ip:host:db");
        mpg.setDataSource(dsc);

        /**
         * 输出模板,如果按照官方原生的可以不配置,也可以配置自定义的模板
         */
        TemplateConfig templateConfig = new TemplateConfig();

        // 配置自定义输出模板
        //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别,默认vm,xml不输出
        templateConfig.setEntity("myTemplates/entity.java");
        templateConfig.setService("myTemplates/service.java");
        templateConfig.setServiceImpl("myTemplates/serviceImpl.java");
        templateConfig.setController("myTemplates/controller.java");
        templateConfig.setMapper("myTemplates/mapper.java");
        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

        /**
         * 自定义配置,可以自定义参数在模板中使用,还可以已定义输出的文件,
         * 如果除了上面的几个模板之外还有其他的文件需要输出可以在这里设置
         */
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("tableComment", "系统用户");
                map.put("Handler", pc.getParent()+".system.handler");
                map.put("SuperHandler", "com.code.generator.core.base.BaseHandler");
                map.put("SuperHandlerName", "BaseHandler");
                map.put("vo", pc.getParent()+".domain.vo");
                this.setMap(map);
            }
        };

        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义handler
        focList.add(new FileOutConfig("myTemplates/handler.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                return gc.getOutputDir() + "/com/code/generator/handler/"
                        + tableInfo.getEntityName()+"Handler" + StringPool.DOT_JAVA;
            }
        });
        // 自定义provider
        focList.add(new FileOutConfig("myTemplates/provider.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                return gc.getOutputDir() + "/com/code/generator/mapper/provider/"
                        + tableInfo.getEntityName()+"Provider" + StringPool.DOT_JAVA;
            }
        });

        // 自定义vo
        focList.add(new FileOutConfig("myTemplates/vo.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                return gc.getOutputDir() + "/com/code/generator/domain/vo/"
                        + tableInfo.getEntityName()+"Vo" + StringPool.DOT_JAVA;
            }
        });

        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);  

        /**
         * 生成策略配置,常用
         * 1.指定生成的表名
         * 2.表名前缀过滤
         * 3.实体名、字段名的命名方式
         * 4.指定继承的父类、父字段
         */
        StrategyConfig strategy = new StrategyConfig();
        //过滤表前缀
        strategy.setTablePrefix(new String[] { "T_" });
        //类名生成策略:驼峰命名
        strategy.setNaming(NamingStrategy.underline_to_camel);
        //字段名生成方式:驼峰命名
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        //需要生成的表
        strategy.setInclude(new String[] { "T_SYS_USER" });
        strategy.setCapitalMode(true);
        //controller是否restful风格
        strategy.setRestControllerStyle(true);

        //配置继承的父类
        strategy.setSuperEntityClass("com.code.generator.po.BaseDomain");
        strategy.setSuperEntityColumns("ID","ISVALID","CREATORID","CREATEDTIME","MODIFYID","MODIFYTIME","PACKAGEID");
        strategy.setSuperControllerClass("com.code.generator.core.base.BaseController");
        strategy.setSuperServiceClass("com.code.generator.core.base.BaseService");
        strategy.setSuperServiceImplClass("com.code.generator.impl.core.base.BaseServiceImpl");
        strategy.setSuperMapperClass("com.code.generator.impl.core.base.BaseMapper");
        mpg.setStrategy(strategy);
        // 执行生成
        mpg.execute();
    }
}
 

3.自定义输出模板

mybatis-plus-generator的jar包里面有原生的模板文件,在jar包的templates目录下,btl对应的是beetl模板引擎,ftl对应freemarker模板引擎,vm对应的是velocity模板引擎,默认是vm,如果想更改使用的引擎可以通过setTemplateEngine方法设置,模板中的全局变量可以参考下面方法里面的变量com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine#getObjectMap

如果不想使用原生的模板,可以编写自己的模板,基于原生模板修改,新的模板要放在resources下面,注意写的时候不要加上模板文件的后缀,会根据引擎自动识别,如果不想输出对应的文件,需要设置为null,否则会拿jar包下面原生的模板生成。

//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别,默认vm,xml不输出
templateConfig.setEntity("myTemplates/entity.java");
templateConfig.setXml(null);

4.自定义参数模板

(1)自定义参数

代码生成器中提供了一些模板参数,如果需要定制化自己的模板可能需要一些自定义的参数可以在这里添加,在模板中可以通过${cfg.key}来使用

(2)自定义模板

原生提供的有controller、service、serviceImpl、dao、mapper、entity六种生成模板,如果我们还需要输出其他的一些模板文件,可以通过以下方式来输出,与TemplateConfig配置不一样,这里模板的路径需要加上后缀,还需要指定输出路径。

到这里,代码生成器就可以工作了,但是还有一些小缺陷在其他的文章中没有提到,下面再提两点

5.关于日志输出

在代码生成器中实际上是有生成过程的日志输出的,如果配置不正确也会有对应的提示,但是在很多的教程里面都没有提到这一点,控制台都提示log4j异常了。

关于日志,实际上在模板引擎中就有log4j的api包引入了,但是log4j还需要有对应的实现才能输出日志,所以会提示上图的异常,因此在上面我的依赖中还加入了slf4j-log4j12的实现依赖

这时候我们再来运行,发现还会报错,这是因为缺少log4j的properties文件,下面我们建立一个log4j.properties文件,注意文件名不要改,就叫这个名字,配置内容参考下面的,也可以用你常用的,具体配置的属性自行查找吧

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

上面该补的补完之后我们就可以看到代码生成器的控制台日志了

6.关于字段类型转换

代码生成器在生成字段信息的时候会从数据库获取表字段信息,根据一定的规则来生成字段,如果不想使用原生的字段信息,可以自定义自己的规则,在这里我使用的是Oracle数据库,在配置数据源的时候有两个方法setDbQuery和setTypeConvert,前者是获取数据库字段信息的sql,后者是数据库字段类型与java字段类型的映射规则,下面我们看一下源码的实现看看是如何转换的

(1)获取字段信息

在这里可以看到对于Oracle在处理Number类型字段的时候是做了处理的,不像mysql,很多时候我们会直接使用number来代表各种数字类型,如double、decimal等,这里会根据number的字段长度、小数位来进行组装然后提供给后面字段映射来进行处理,所以我们在设计的时候要注意,该定义长度就定义长度,该定义小数位就定义小数位,尽量不要直接用number或者number(*,0)这样的方式来定义,否则在后面映射的时候回当成Double处理,但实际上我们想要的是Integer,不然生成之后你就只能手工修改,或者自定义自己的转换规则来适配

SELECT
	A.COLUMN_NAME,
CASE

	WHEN A.DATA_TYPE = 'NUMBER' THEN
	(
CASE

	WHEN A.DATA_PRECISION IS NULL THEN
	A.DATA_TYPE
	WHEN NVL( A.DATA_SCALE, 0 ) > 0 THEN
	A.DATA_TYPE || '(' || A.DATA_PRECISION || ',' || A.DATA_SCALE || ')' ELSE A.DATA_TYPE || '(' || A.DATA_PRECISION || ')'
END
	) ELSE A.DATA_TYPE
	END DATA_TYPE,
	B.COMMENTS,
	DECODE( C.POSITION, '1', 'PRI' ) KEY
FROM
	ALL_TAB_COLUMNS A
	INNER JOIN ALL_COL_COMMENTS B ON A.TABLE_NAME = B.TABLE_NAME
	AND A.COLUMN_NAME = B.COLUMN_NAME
	AND B.OWNER = 'USER'--schema
	LEFT JOIN ALL_CONSTRAINTS D ON D.TABLE_NAME = A.TABLE_NAME
	AND D.CONSTRAINT_TYPE = 'P'
	AND D.OWNER = 'USER'--schema
	LEFT JOIN ALL_CONS_COLUMNS C ON C.CONSTRAINT_NAME = D.CONSTRAINT_NAME
	AND C.COLUMN_NAME = A.COLUMN_NAME
	AND C.OWNER = 'USER' --schema
WHERE
	A.OWNER = 'USER' --schema
	AND A.TABLE_NAME = 'T_SYS_USER'
ORDER BY
	A.COLUMN_ID

(2)字段类型映射

字段类型映射我们关注点还是对于number的处理,其他类型都是直接映射过去的,在这里可以看到是使用了正则表达式对number的字段长度进行匹配来区分Integer、Long、Double,如果没有小数位,长度小于10的则为Integer,否则为Long,否则一律按Double处理,所以在定义Number的时候就注意按实际来吧,不要贪图方便或者偷懒,否则生成之后Entity、xml都要做相应的修改。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 基于Mybatis plus 自动代码生成器的实现代码

    1.使用的是maven项目,添加依赖 <!-- mybatis-plus begin --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.2.0</version> </dependency> 还有数据库的连接 <dependency> <

  • MyBatis-Plus代码生成器的使用详解

    1.引入依赖 <!--mybatisplus依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.5</version> </dependency> <!--代码生成模板--> <dependency>

  • 基于Mybatis Plus实现代码生成器CodeGenerator

    导入生成器需要的依赖坐标: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>org.apache.velocity</gro

  • Springboot Mybatis Plus自动生成工具类详解代码

    前言 代码生成器,也叫逆向工程,是根据数据库里的表结构,自动生成对应的实体类.映射文件和接口. 看到很多小伙伴在为数据库生成实体类发愁,现分享给大家,提高开发效率. 一.pom依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> &

  • mybatis plus自动生成器解析(及遇到的坑)

    目录 mybatisplus自动生成器解析 1.加入依赖 2.写一个类,作为自动生成器的入口 3.修改代码 3.运行 讲解一下 mybatisplus代码生成器使用及注意事项 1.添加maven依赖 2.编写代码生成器的类 3.自定义输出模板 4.自定义参数模板 5.关于日志输出 6.关于字段类型转换 mybatis plus自动生成器解析 使用这个可以超快速生成entity service controller层 1.加入依赖 模板引擎的依赖也要导入,不然运行会报错的 <dependency>

  • Spring Boot整合mybatis并自动生成mapper和实体实例解析

    最近一直都在学习Java,发现目前Java招聘中,mybatis出现的频率挺高的,可能是目前Java开发中使用比较多的数据库ORM框架.于是我准备研究下Spring Boot和mybatis的整合. 1.在pom.xml文件中添加下面的配置 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-

  • MyBatis框架之mybatis逆向工程自动生成代码

    Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件. 逆向工程 1.什么是逆向工程 mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml.po..) 企业实际开发中,常用的逆向工程方式: 由于数据库的表生成java代码. 2.下载逆向工程 my

  • Spring和MyBatis整合自动生成代码里面text类型遇到的坑

    Spring和MyBatis整合以后,使用自动生成代码工具生成dao和mapper配置文件,生成步骤如下(以Intelli idea为例). 1.编写生成代码配置文件generatorConfig.xml. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator

  • springboot整合freemarker代码自动生成器

    手撸一个代码自动生成器!! 实现功能:MyBatis 逆向工程 技术架构 页面是用 Vue ,element-ui开发:网络请求是 Axios. 服务端是 Spring Boot 页面模版是 Freemarker: 开发步骤: 一.创建工程 二.数据库连接操作 1.所需包结构 2.在model包中创建Db类 作用:用于接受前端传来数据库连接相关的值(username,password,url) package com.example.generate_code.model; /** * @aut

  • SpringBoot整合Mybatis Generator自动生成代码

    目录 1.创建SpringBoot项目 2. mybatis-generator-maven插件的配置 3. 项目结构构建 4. application.yml配置 5. generatorConfig.xml配置 7. 选择 Mybatis Generator 启动,自动在dao.entity.mapper包下生成代码 Mybatis是目前主流的ORM框架,相比于hibernate的全自动,它是半自动化需要手写sql语句.接口.实体对象,后来推出的Generator自动生成代码,可以帮我们提高

  • 基于QT设计一个春联自动生成器

    目录 1. 前言 2. 实现原理 3. 示例代码 3.1 获取春联接口 3.2 数据解析代码 3.3 token数据存储 1. 前言 春节是中国最隆重的传统节日,一到过年家家户户肯定是要贴春联:在春节前夕,会用大红纸张,加上浓墨书写祝福词语,在春节当天贴于门框两边,寓意着一年吉祥如意,还会将福字倒转贴于门上,有"福到临门"的意思.为了方便找到合适的春联句子,我这里就采用现成的自然语言处理接口实现了一个自动生成春联的软件,输入提示词就可以完成春联的生成,方便写春联时参考. 下面是实现的效

  • 基于mybatis-plus-generator实现代码自动生成器

    目录 1.引入依赖 2.简单的代码生成 3.自定义模板生成代码 3.1实现思路 3.2定义代码生成常量 3.3全局配置 3.4定义生成代码模板的路径 3.5定义各文件生成存储路径 3.6数据源配置 3.7配置策略 3.8组装模板属性 3.9定义对应的模板文件 3.10定义启动类 1.引入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</

  • Java Mybatis框架由浅入深全解析下篇

    目录 前言 什么是Maven Maven环境配置 Maven 构建生命周期 Maven项目的创建 目录结构 pom.xml文件 什么是pom.xml文件 加入项目所需依赖 添加资源文件的指定 总结 前言 上一篇我们第一次测试了Mybatis框架,并且成功了. 本想直接推进学习框架配置,但是很多小伙伴对Maven不了解,今天就来浅谈一下Maven. 今天我们就来剖析pom.xml配置文件,这个pom.xml文件,是我们构建maven项目的配置文件,既然我们使用到了,就利用本篇文章学习一下吧.这里只

  • Java Mybatis框架由浅入深全解析上篇

    目录 学习路线 什么是三层架构 常用的SSM框架(了解) 什么是框架 什么是Mybatis框架 添加框架的步骤 1.新建库建表 2.新建maven项目 3.修改目录 4.修改pom.xml文件 5.修改pom.xml文件 总结 学习路线 什么是三层架构 在项目开发中,遵循一种形式模式,分为三层. 界面层: 用来接收客 户端的输入,调用业务逻辑层进行功能处理,返回结果给客户端.过去的servlet就是界面层的功能. **业务逻辑层:**用来进行整个项目的业务逻辑处理,向上为界面层提供处理结果,向下

随机推荐