当前位置: 首页>后端>正文

mybatis-generator代码生成器

使用该代码生成器可以自动根据配置的表来生成对应的mapper、mapper.xml、bean、以及Example(查询条件封装)
首先在resources目录创建文件generator.properties文件,其中写入数据库连接所需的参数,例:

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
jdbc.userId=root
jdbc.password=root

同一目录下创建生成文件配置generatorConfig.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!--代码自动生成配置-->
<generatorConfiguration>
    <!--引入配置文件-->
    <properties resource="generator.properties"/>
    <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <property name="javaFileEncoding" value="UTF-8"/>
        <!--*********************************插件*************************************-->
        <!-- 生成的实体类自动实现Serializable序列化-->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
        <!-- 为生成的实体类创建一个toString方法 -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
        <!--生成mapper.xml时覆盖原文件(原来是会直接追加到原文件中的)-->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
        <!--*********************************生成注释*************************************-->
        <!--可以自定义生成model的代码注释-->
        <commentGenerator type="com.example.mall_study.mbg.CommentGenerator">
            <!--去除自动生成的注释 -->
            <property name="suppressAllComments" value="true"/>
            <!--去除生成日期-->
            <property name="suppressDate" value="true"/>
            <!--是否把表中的备注添加到注释中-->
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>
        <!--*********************************数据库配置*************************************-->
        <!--配置数据库连接-->
        <jdbcConnection driverClass="${jdbc.driverClass}"
                        connectionURL="${jdbc.connectionURL}"
                        userId="${jdbc.userId}"
                        password="${jdbc.password}">
            <!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
            <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>
        <!--*********************************指定生成文件路径*************************************-->
        <!--指定生成model的路径-->
        <javaModelGenerator targetPackage="com.xxx.project_name.mbg.model" targetProject="src\main\java"/>
        <!--指定生成mapper.xml的路径-->
        <sqlMapGenerator targetPackage="mbg.mapper" targetProject="src\main\resources"/>
        <!--指定生成mapper接口的的路径-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.xxx.project_name.mbg.mapper"
                             targetProject="src\main\java"/>
        <!--******************************指定要生成的表(示例)**********************************-->
        <table tableName="tablename">
            <generatedKey column="id" sqlStatement="MySql" identity="true"/>
        </table>-->
    </context>
</generatorConfiguration>

接下来就是生成工具

import com.example.mall_study.component.JwtAuthenticationEntryPoint;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GeneratorUtil {
    private static final Logger LOGGER = LoggerFactory.getLogger(GeneratorUtil.class);
    public static void build(){
        //MBG 执行过程中的警告信息
        List<String> warnings = new ArrayList<>();
        //当生成的代码重复时,是否覆盖原代码
        boolean overwrite = true;
        //读取我们的 MBG 配置文件(如果不想用配置文件,可以使用Context类用java代码写入配置config.addContext(context)即可)
        InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = null;
        try {
            config = cp.parseConfiguration(is);

            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            //创建MBG代码生成器
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            //执行生成代码(可以设置监听器)
            myBatisGenerator.generate(null);
            //输出警告信息
            for (String warning : warnings) {
                LOGGER.warn(warning);
            }
        } catch (IOException | InterruptedException | InvalidConfigurationException | SQLException |
                 XMLParserException e) {
            e.printStackTrace();
        } finally {
            try {
                if(is != null) is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}


https://www.xamrdz.com/backend/3mj1933809.html

相关文章: