FreemarkerUtils
private void generatorMapper(TableInfo table, List<ColumnInfo> columnInfos, Map<String, Object> dataMap)
throws Exception {
System.out.println("===> 正在生成Mapper...");
String mapperPackage = StringUtils.isBlank(mapperConfig.getMapperPackage()) ?
globalConfig.getBasePackage() :
globalConfig.getBasePackage() + "." + mapperConfig.getMapperPackage();
String mapperFilePathDir = StrUtils.formatFilePath(globalConfig.getMapperPath() + File.separator + mapperPackage);
mapperPackage = StrUtils.formatPackagePath(mapperPackage);
String mapperName = StrUtils.camelCase(table.getTableName(), true);
mapperName = String.format(mapperConfig.getMapperFormat(), mapperName);
dataMap.put("mapperPackage", mapperPackage);
dataMap.put("mapperName", mapperName);
dataMap.put("withSelective", mapperConfig.isWithSelective());
Path path = Path.of(root + File.separator + mapperFilePathDir + File.separator + mapperName + ".java");
FreemarkerUtils.createFileFromTemplate(path,dataMap,"mapper.ftl");
System.out.println("===> Mapper生成完成!文件地址:" + path);
System.out.println("===> 正在生成XML...");
String xmlPath = StringUtils.isBlank(mapperConfig.getMapperXmlPackage()) ?
globalConfig.getMapperXmlPath() :
globalConfig.getMapperXmlPath() + File.separator + mapperConfig.getMapperXmlPackage();
Path xml = Path.of(root + File.separator + xmlPath + File.separator + mapperName + ".xml");
FreemarkerUtils.createFileFromTemplate(xml,dataMap,"mapperXml.ftl");
System.out.println("===> XML生成完成!文件地址:" + xml);
}
package com.yml.mybatis.gererator.util;
import freemarker.template.Configuration;
import freemarker.template.Template;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
public class FreemarkerUtils {
private static final String templatePath = "template";
private static Configuration configuration = null;
static {
configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
configuration.setDefaultEncoding(StandardCharsets.UTF_8.name());
configuration.setClassForTemplateLoading(FreemarkerUtils.class, "/");
}
public static void createFileFromTemplate(Path path, Map<String, Object> dataMap, String templateFile) throws Exception {
Template template = configuration.getTemplate(templatePath + "/" + templateFile);
if (!Files.exists(path.getParent())) {
Files.createDirectories(path.getParent());
}
File target = new File(path.toUri());
if (target.exists()) {
throw new RuntimeException(path.toUri() + " 文件已存在");
}
if (!target.exists()) {
Files.createFile(path);
}
try (Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(target)))) {
template.process(dataMap, out);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${mapperPackage}.${mapperName}">
<#if !enableMyBatisPlus>
<insert id="insert" parameterType="${entityPackage}.${entityName}">
insert into ${tableName} (<#assign i1 = 0><#list columns as column><#if i1 != 0>,</#if>${column.name}<#assign i1 = i1+1></#list>)
values(<#assign i2 = 0><#list columns as column><#if i2 != 0>,</#if><#noparse>#{</#noparse>${column.javaFiled}<#noparse>}</#noparse><#assign i2 = i2+1></#list>)
</insert>
<#if primaryColumn?? && (primaryColumn?size > 0)>
<delete id="removeById">
delete from ${tableName}
<where>
<#list primaryColumn as column>
and ${column.name} = <#noparse>#{</#noparse>${column.javaFiled}}
</#list>
</where>
</delete>
<update id="updateById" parameterType="${entityPackage}.${entityName}">
update ${tableName}
set <#assign i1 = 0>
<#list normalColumn as column>
<#if i1 != 0>,</#if>${column.name} = <#noparse>#{</#noparse>${column.javaFiled}}<#assign i1 = i1+1>
</#list>
<where>
<#list primaryColumn as column>
and ${column.name} = <#noparse>#{</#noparse>${column.javaFiled}}
</#list>
</where>
</update>
<update id="updateSelectiveById" parameterType="${entityPackage}.${entityName}">
update ${tableName}
<set>
<#list normalColumn as column>
<if test="${column.javaFiled} != null">
${column.name} = <#noparse>#{</#noparse>${column.javaFiled}},
</if>
</#list>
</set>
<where>
<#list primaryColumn as column>
and ${column.name} = <#noparse>#{</#noparse>${column.javaFiled}}
</#list>
</where>
</update>
<select id="selectById" resultType="${entityPackage}.${entityName}">
select <#assign i1 = 0> <#list columns as column><#if i1 != 0>,</#if>${column.name}<#assign i1 = i1+1></#list>
from ${tableName}
<where>
<#list primaryColumn as column>
and ${column.name} = <#noparse>#{</#noparse>${column.javaFiled}}
</#list>
</where>
</select>
</#if>
</#if>
<#if enableMyBatisPlus && withSelective && primaryColumn?? && (primaryColumn?size > 0)>
<update id="updateSelectiveById" parameterType="${entityPackage}.${entityName}">
update ${tableName}
<set>
<#list normalColumn as column>
<if test="${column.javaFiled} != null">
${column.name} = <#noparse>#{</#noparse>${column.javaFiled}},
</if>
</#list>
</set>
<where>
<#list primaryColumn as column>
and ${column.name} = <#noparse>#{</#noparse>${column.javaFiled}}
</#list>
</where>
</update>
</#if>
</mapper>
| https://gitee.com/yangmenglin/mybatis-freemarker-generator.git | header |
|---|---|
作者:随风
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻,做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
浙公网安备 33010602011771号