0.1、Mybatis generator生成mapper (聚焦版)

本文详细介绍如何在Spring+Maven环境下配置MyBatis自动生成代码,并提供了generatorConfig.xml的具体配置示例,包括数据库驱动、连接设置、实体类生成路径等。

1、更全内容

本文聚焦 mybatis 自动生成代码的部分,SpringBoot 配置的等更多细节可以参考
SringBoot 结合 Mybatis

2、细节

Spring + Maven 环境下 Mybatis 自动生成代码配置

  • 需要对应数据库的数据库驱动jar包
    本文为 mysql-connector-java-5.1.7-bin.jar,放置路径为 C:/Users/Administrator/Desktop/mybatis-generator/mysql-connector-java-5.1.7-bin.jar

  • 添加 generatorConfig.xml 文件到项目中,注意路径,本文为 src/main/resources/generator/generatorConfig.xml

    • generatorConfig.xml 内容,涉及数据库驱动,数据库连接,Mapper,实体,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>
    	<classPathEntry location="C:/Users/Administrator/Desktop/mybatis-generator/mysql-connector-java-5.1.7-bin.jar" />
    	<context id="context">
    		<!-- 注释 -->
    		<commentGenerator>  
                <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->  
                <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->  
                <property name="addRemarkComments" value="true"/>
            </commentGenerator>
            
    		<!-- JDBC连接 -->
    		<jdbcConnection connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8" driverClass="com.mysql.jdbc.Driver" password="root" userId="root"></jdbcConnection>
    		<!-- 类型转换 -->
    		<javaTypeResolver>
    			<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
    			<property name="forceBigDecimals" value="false" />
    		</javaTypeResolver>
    		
    		<!-- 生成实体类地址 -->    
            <javaModelGenerator targetPackage="com.bestcxx.stu.springmybatis.model" targetProject="src/main/java">  
                <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
                <property name="enableSubPackages" value="false" /> 
                <!-- 是否针对string类型的字段在set的时候进行trim调用 -->  
                <property name="trimStrings" value="true"/>  
            </javaModelGenerator>  
    		
    		<!-- 生成mapxml文件 -->  
    		<sqlMapGenerator targetPackage="mybatis.mapper" targetProject="src/main/resources">
    			<!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
    			<property name="enableSubPackages" value="true" />
    		</sqlMapGenerator>  
    		
    		<!-- 生成mapxml对应client,也就是接口dao -->      
            <javaClientGenerator targetPackage="com.bestcxx.stu.springmybatis.dao" targetProject="src/main/java" type="XMLMAPPER">  
    			<!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
    			<property name="enableSubPackages" value="false" />
    			<!--<property name="rootInterface" value="cn.acsm.farmeasy.order.core.dao.BaseDAO"/> -->
    		</javaClientGenerator>
    		
    		<!-- 配置表信息,这里没生成一张表,这里需要改变一次对应表名 -->  
    		<!-- 已经生成实体类的表:-->  
    <!--         <table tableName="表名"  domainObjectName="驼峰格式实体名" module="order" enableCountByExample="false"      -->   
             <table tableName="test2"  domainObjectName="Test2" enableCountByExample="false"     
                enableDeleteByExample="false" enableSelectByExample="false"  enableUpdateByExample="false">  
                <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample 是否生成 example类   -->  
                <!-- 忽略列,不生成bean 字段   
                <ignoreColumn column="FRED" />-->  
                <!-- 指定列的java数据类型   
                <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->  
            </table>
            
    	</context>
    </generatorConfiguration>
    
  • pom.xml中添加 Maven 插件 配置

    <build>
    	...
    		<plugins>
    		...
    	           <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.2</version>
                    <configuration>
                        <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                        <overwrite>true</overwrite>
                        <verbose>true</verbose>
                    </configuration>
                </plugin>
       
        </plugins>  
      </build>
    
  • 运行 mybatis-generator:generate ,生成代码

允许一次生成多个表的对应代码,如果使用 Spring Boot 可以直接在项目上运行 Mybatis 自动生成代码的程序
完整的命令行是 mvn:mybatis-generator:generate,这是一个 Maven 命令,如果直接在 Eclipse 中运行,使用 mybatis-generator:generate即可。

  • 数据库 tinyint(4) 类型转 Java 中 Integer
<table tableName="demo_table" domainObjectName="DemoTabelDO" enableCountByExample="false"
           enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
           selectByExampleQueryId="true">
      <generatedKey column="id" sqlStatement="MySql" identity="true"/>
      <columnOverride column="activate_status" property="activateStatus" javaType="java.lang.Integer" />

    </table>
<think>首先,用户的问题是基于系统级指令和用户可见层的要求。系统级指令包括:所有行内数学表达式必须用$...$,独立公式用$$...$$单独成段,确保LaTeX语法正确,使用中文回答,生成相关问题,并在引用的段落末尾自然地添加引用标识。 用户的问题是关于使用MyBatis Generator生成Mapper层代码的方法。用户提供了几个引用: - 引用[1]: 关于自定义tk.mybatis.mapper.generator.MapperPlugin插件来生成mapper代码。 - 引用[2]: SpringBoot中使用MyBatis Generator生成Dao层代码的步骤。 - 引用[3]: 报错信息,关于插件依赖问题。 - 引用[4]: 配置jdbcConnection来解决生成的方法不全问题。 用户说这些引用仅供参考,我需要参考用户上一次的问题和我的回答。但从上下文看,用户直接问了这个问题:"我想查找使用MyBatis Generator生成Mapper层代码的方法 请问使用MyBatis Generator生成Mapper层代码的方法"。所以,我应该直接回答这个问题。 关键点:生成相关问题。指令说"生成相关问题",在示例中,是在回答后添加"§§相关问题§§"部分。 回答结构:需要清晰、逐步解决问题,保证真实可靠。 我的回答应该涵盖使用MyBatis Generator的基本方法。既然用户提到了SpringBoot和插件,我应该整合这些信息。 步骤基于引用[2],因为它详细描述了过程: 1. 创建一个Maven项目。 2. 在Resource文件夹下创建generator.properties文件。 3. 在Resource文件夹下创建generatorConfig.xml配置文件。 4. 配置Pom文件。 5. 配置Maven项目启动。 然后运行生成代码。 还需要提到插件和常见问题,比如引用[4]中提到的配置nullCatalogMeansCurrent属性来解决主键方法缺失问题。 引用[1]是关于自定义插件的,用户似乎扩展了tk.mybatis的插件,但用户的问题是"使用MyBatis Generator生成Mapper层代码的方法",所以核心是原生MyBatis Generator,但可以提及插件选项。 用户不可见的引用:我需要自然地添加引用标识。例如,如果提到某个点来自引用,就在末尾加[^n]。 现在,构建回答: 1. **引言**:简要介绍MyBatis Generator是什么。 2. **步骤**:详细说明如何使用它生成Mapper层代码。基于引用[2]。 - 创建Maven项目。 - 添加依赖:在pom.xml中添加mybatis-generator-maven-plugin。 - 配置generatorConfig.xml:指定数据库连接、表、生成模型等。 - 运行插件。 3. **常见问题**:提及用户引用中的点,比如依赖问题(引用[3])、方法不全问题(引用[4])。 4. **结束**:确保回答清晰。 然后,生成相关问题。 使用中文回答。 没有数学表达式,所以不需要LaTeX格式。 添加相关知识:既然用户提到了tk.mybatis插件,我可以简要提到插件选项。 最后,相关问题部分。 结构: - 回答用户问题。 - 在末尾添加相关问题。 引用标识:在提到具体内容时添加。例如,"根据引用[2],步骤如下..." 用户说"上述引用仅供参考",所以我不必严格依赖它们,但应该参考以增强可靠性。 整合回答: 1. 介绍:MyBatis GeneratorMyBatis的代码生成工具,可以自动生成Mapper接口、Model类和XML映射文件。 2. 基本方法(基于引用[2]): - 创建一个Maven项目。 - 在pom.xml中添加插件依赖: ```xml <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.0</version> <!-- 使用最新本 --> </plugin> ``` - 在src/main/resources目录下创建generatorConfig.xml文件,配置数据库连接、表映射等。 - 运行命令:mvn mybatis-generator:generate 3. 配置细节:在generatorConfig.xml中,需要指定jdbcConnection等。引用[4]提到配置nullCatalogMeansCurrent属性以避免主键方法缺失问题。 4. 常见问题:如引用[3]中的依赖问题,可能是网络或证书问题;引用[1]的插件可以自定义生成逻辑。 5. 结束语。 然后,相关问题: </think>### 使用MyBatis Generator生成Mapper层代码的方法 MyBatis Generator(简称MBG)是MyBatis官方提供的代码生成工具,能够自动生成Mapper接口、XML映射文件、Model实体类等,显著提升开发效率。下面基于最佳实践和常见配置,逐步介绍如何使用MBG生成Mapper层代码,步骤清晰可靠。 #### 1. **准备工作:创建项目并添加依赖** 首先,创建一个Maven项目或确保现有项目支持MBG。在`pom.xml`中添加MBG插件和相关依赖: ```xml <dependencies> <!-- MyBatis核心依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> <!-- 使用最新稳定 --> </dependency> <!-- 数据库驱动(以MySQL为例) --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> </dependencies> <build> <plugins> <!-- MBG Maven插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.2</version> <!-- 推荐最新本 --> <executions> <execution> <id>generate-mybatis-code</id> <phase>generate-sources</phase> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 此配置确保MBG插件在Maven构建时自动运行[^2]。 #### 2. **配置生成器文件:`generatorConfig.xml`** 在`src/main/resources`目录下创建`generatorConfig.xml`文件。这是MBG的核心配置文件,定义数据库连接、生成规则和表映射: ```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> <!-- 数据库连接配置 --> <context id="mysql" targetRuntime="MyBatis3"> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/your_database?serverTimezone=UTC" userId="root" password="your_password"> <!-- 避免主键方法缺失问题 --> <property name="nullCatalogMeansCurrent" value="true"/> <!-- 关键配置[^4] --> </jdbcConnection> <!-- 生成Model类的位置 --> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <!-- 生成Mapper XML的位置 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/> <!-- 生成Mapper接口的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/> <!-- 指定需要生成代码的表 --> <table tableName="your_table" domainObjectName="YourEntity"/> <!-- 替换为实际表名和实体名 --> </context> </generatorConfiguration> ``` **关键说明**: - `jdbcConnection`配置数据库连接,注意`serverTimezone=UTC`避免时区问题。 - `nullCatalogMeansCurrent`属性确保生成所有主键相关方法(如`selectByPrimaryKey`),避免方法不全[^4]。 - `table`元素可指定多个表,或使用通配符生成所有表。 #### 3. **运行MBG生成代码** 通过Maven命令执行生成: - **命令行运行**:在项目根目录执行: ``` mvn mybatis-generator:generate ``` - **IDE集成**:在IDEA/Eclipse中,右键`pom.xml`选择`Maven > Generate Sources`。 成功运行后,代码将生成到指定目录: - Mapper接口:`src/main/java/com/example/mapper/YourEntityMapper.java` - XML映射文件:`src/main/resources/mapper/YourEntityMapper.xml` - Model实体类:`src/main/java/com/example/model/YourEntity.java` #### 4. **常见问题与优化** - **依赖问题**:若报错`Plugin ... could not be resolved`(如引用[3]),检查Maven仓库配置或网络,确保能访问中央仓库;临时解决方案:添加`-DskipTests`参数或更新插件本[^3]。 - **自定义插件扩展**:如需增强生成逻辑(如添加通用方法),可集成`tk.mybatis.mapper.generator.MapperPlugin`(引用[1]),在`generatorConfig.xml`中添加: ```xml <plugin type="tk.mybatis.mapper.generator.MapperPlugin"/> <!-- 扩展Mapper功能[^1] --> ``` - **Spring Boot集成**:在Spring Boot项目中,配置更简化;引用`mybatis-spring-boot-starter`并确保`generatorConfig.xml`路径正确[^2]。 #### 5. **验证与使用** 生成后,在代码中直接注入Mapper接口: ```java @Autowired private YourEntityMapper yourEntityMapper; // Spring Boot自动装配 ``` 调用方法如`yourEntityMapper.selectByPrimaryKey(1)`即可操作数据库。 通过以上步骤,您可高效生成Mapper层代码。如需扩展功能,参考官方文档或社区插件[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值