使用Mybatis的generator插件生成WithBLOBS.java文件原因及解决

本文探讨了在MyBatis Generator中如何避免为text、mediumtext字段生成额外的XXXWithBLOBS实体类,通过XML配置示例展示了如何将这些大文本字段的数据类型转换为VARCHAR,从而统一存储于单一实体对象中。

当表中有text、mediumtext等文本类型的字段时,generator会生成XXXWithBLOBS.java文件并继承原entity。
若想要将这两个属性合并到一个entity中,需要在xml中添加如下配置,这样就不会生成XXXWithBLOBS.java文件了

<table tableName="article" domainObjectName="Article">
    <columnOverride column="text_content" javaType="java.lang.String" jdbcType="VARCHAR" />
    <columnOverride column="content" javaType="java.lang.String" jdbcType="VARCHAR" /> 
</table>
使用 MyBatis Generator 时,生成多余的 `.java.1` 文件通常是由于某些配置或运行方式的细节未正确处理,尤其是在使用命令行方式运行时容易触发此类问题。以下是具体原因分析及解决方法: #### 生成 `.java.1` 文件原因 1. **文件覆盖冲突**:当 MyBatis Generator 尝试生成与现有文件同名的 Java 文件时,如果配置文件未正确设置覆盖策略,则工具可能会生成 `.java.1` 文件作为备份,以避免覆盖原有文件[^1]。 2. **未正确清理旧文件**:在多次运行生成器时,如果没有清理之前生成文件,可能会导致新文件无法覆盖旧文件,从而生成 `.java.1` 文件作为替代输出[^2]。 3. **插件或配置问题**:某些插件(如 `UnmergeableXmlMappersPlugin`)可能导致生成逻辑异常,尤其是在配置不完整或路径设置错误时,这会间接导致文件命名异常[^3]。 #### 解决方法 1. **检查并设置覆盖参数**:在 `mybatis-generator.xml` 配置文件中,确保 `<generatorConfiguration>` 部分包含以下参数,以允许覆盖现有文件: ```xml <context id="default" targetRuntime="MyBatis3"> <property name="javaFileEncoding" value="UTF-8"/> <property name="javaFilesOverwrite" value="true"/> </context> ``` 这样可以避免生成 `.java.1` 文件作为备份。 2. **清理目标目录**:在运行 MyBatis Generator 之前,手动清理目标目录中的旧文件,确保生成器不会因文件冲突而生成额外的 `.java.1` 文件。 3. **检查插件配置**:如果使用插件(如 `UnmergeableXmlMappersPlugin`),请确保插件配置正确,路径无误,避免因插件问题导致生成异常[^3]: ```xml <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" /> ``` 4. **使用编程方式调用**:为了避免命令行运行时的类路径问题,可以改用编程方式调用 MyBatis Generator,这种方式会自动加载编译后的类文件,并减少配置错误的可能性[^2]。示例代码如下: ```java 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.util.ArrayList; import java.util.List; public class GeneratorRunner { public static void main(String[] args) throws Exception { List<String> warnings = new ArrayList<>(); boolean overwrite = true; File configFile = new File("path/to/mybatis-generator.xml"); 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); } } ``` 5. **检查运行环境**:确保在 Windows 环境下运行时,路径配置正确,避免因路径错误导致生成器无法正常工作[^3]。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值