MyBatis (MBG)用法

1 dependencies

dependencies {  
    implementation("org.mybatis:mybatis:3.5.15")  
    implementation("mysql:mysql-connector-java:8.0.33")  
  
    // MyBatis Generator 核心  
    implementation("org.mybatis.generator:mybatis-generator-core:1.4.2")  
}

2 mbg-config.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>  
    <!-- 数据库驱动 JAR 包的路径。  
         由于我们在 Gradle 中通过配置管理依赖,这里通常可以省略,  
         或者使用 classPathEntry 指定,但 Gradle Task 会处理 classpath,所以通常不需要。  
    -->  
    <!-- <classPathEntry location="/path/to/your/mysql-connector-java.jar"/> -->  
    <context id="DB2Tables" targetRuntime="MyBatis3">  
        <!-- 可选:生成 toString(), hashCode(), equals() 方法 -->  
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />  
  
        <!-- 数据库连接信息 -->  
        <!-- TODO: 请确认数据库连接信息是否正确 -->  
        <jdbcConnection  
                driverClass="com.mysql.cj.jdbc.Driver"  
                connectionURL="jdbc:mysql://localhost:3306/nacos_devtest"  
                userId="nacos"  
                password="nacos">  
            <!-- 针对 MySQL 8.0+ 需要设置时区等参数 -->  
            <property name="serverTimezone" value="UTC"/>  
        </jdbcConnection>  
  
        <!-- Java 模型(实体类)生成配置 -->  
        <javaModelGenerator targetPackage="ca.base.core.model" targetProject="src/main/java">  
            <property name="enableSubPackages" value="true"/>  
            <property name="trimStrings" value="true"/>  
        </javaModelGenerator>  
  
        <!-- SQL Map XML 文件生成配置 -->  
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">  
            <property name="enableSubPackages" value="true"/>  
        </sqlMapGenerator>  
  
        <!-- Mapper 接口生成配置 -->  
        <javaClientGenerator type="XMLMAPPER" targetPackage="ca.base.core.mapper" targetProject="src/main/java">  
            <property name="enableSubPackages" value="true"/>  
        </javaClientGenerator>  
  
        <!-- 指定要生成代码的表 -->  
        <!-- tableName:表名,domainObjectName:对应的实体类名 -->  
        <table tableName="base_chain" domainObjectName="BaseChain"  
               enableCountByExample="true" enableUpdateByExample="false"  
               enableDeleteByExample="false" enableSelectByExample="false"  
               selectByExampleQueryId="false"/>  
<!--         <table tableName="base_chain" domainObjectName="BaseChain"/>-->  
        <!-- 可以配置多个 table -->    </context>  
</generatorConfiguration>

3 Main

package com.example.mbg;  
  
import org.mybatis.generator.api.MyBatisGenerator;  
import org.mybatis.generator.config.Configuration;  
import org.mybatis.generator.config.xml.ConfigurationParser;  
import org.mybatis.generator.internal.DefaultShellCallback;  
  
import java.io.File;  
import java.net.URL;  
import java.util.ArrayList;  
import java.util.List;  
  
public class GeneratorMain {  
    public static void main(String[] args) {  
        try {  
            List<String> warnings = new ArrayList<>();  
            boolean overwrite = true;  
  
            URL resource = GeneratorMain.class.getClassLoader().getResource("mbg-config.xml");  
            File configFile = new File(resource.toURI());  
            ConfigurationParser cp = new ConfigurationParser(warnings);  
            Configuration config = cp.parseConfiguration(configFile);  
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);  
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);  
            myBatisGenerator.generate(null);  
  
            System.out.println("✅ MBG 代码生成完成!");  
            warnings.forEach(System.out::println);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

targetProject配置的路径是项目的根路径,可能需要手动确保路径存在

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容