简介:本文将详细介绍如何在MyBatis-Plus中定制代码生成器,特别是如何修改MyBatis的模板以生成更符合项目需求的代码。通过实战步骤和示例代码,非专业读者也能轻松上手,实现自动化代码生成的高效与灵活性。
MyBatis-Plus作为一款强大的MyBatis增强工具,其内置的代码生成器极大提升了开发效率。然而,在实际项目中,我们常常需要对生成的代码进行定制,以满足特定的项目需求。本文将引导你如何修改MyBatis-Plus的代码生成器模板,特别是针对MyBatis部分的模板,以生成更符合你项目风格的代码。
MyBatis-Plus的代码生成器通过读取数据库表结构,自动生成对应的Entity、Mapper、Mapper XML、Service、Controller等文件。它支持通过配置文件或编程方式自定义生成逻辑。
MyBatis-Plus的代码生成器模板默认位于mybatis-plus-generator/src/main/resources/templates目录下。对于MyBatis部分,我们主要关注mapper.xml.ftl这个模板文件,它负责生成Mapper XML文件。
步骤一:复制模板文件
首先,将mapper.xml.ftl文件从mybatis-plus-generator的jar包中复制出来,或者直接从源代码仓库中获取,并放置在你的项目中,例如src/main/resources/mybatis-plus-generator/templates。
步骤二:修改模板内容
使用文本编辑器打开mapper.xml.ftl文件,根据需求进行修改。比如,你可能想要调整SQL语句的格式、添加自定义的SQL片段,或者改变生成的XML结构。
下面是一个简单的示例,展示了如何修改模板以添加自定义的SQL注释:
<#-- 在<mapper>标签中添加自定义的namespace前缀 --><mapper namespace="${package.Mapper}.${table.mapperName}"><#-- 遍历表字段,生成selectById --><select id="selectById" resultType="${resultMap}">SELECT<#list table.fieldList as field><#if field.propertyType == "String" || (field.propertyType!starts_with("java.lang"))>${field.property} AS ${field.propertyCamelHump},<#else>${field.property},</#if></#list>FROM ${table.name}WHERE ${pk.column} = #{${pk.property}}<!-- 这里添加自定义的SQL注释 --><!-- Custom SQL Comment: 查询指定ID的数据项 --></select>...</mapper>
步骤三:配置代码生成器
在代码中配置MyBatis-Plus的代码生成器时,需要指定模板路径为你修改后的模板文件位置。
```java
// 初始化代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty(“user.dir”);
gc.setOutputDir(projectPath + “/src/main/java”);
gc.setAuthor(“YourName”);
…
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl(“jdbc
//localhost:3306/yourdb?useUnicode=true&useSSL=false&characterEncoding=utf8”);
…
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent(“com.yourcompany.project”);
pc.setMapper(“mapper”);
…
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
…
mpg.setStrategy(strategy);
// 模板配置
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null); // 取消默认XML模板
// 设置自定义模板路径
templateConfig.setEntity(“/templates/entity.ftl”);
templateConfig.setMapper(“/templates/mapper.ftl”); // 注意路径要与你的文件结构一致
…