上一篇写的是根据数据库字段生成java bean,虽然有一些缺陷,但是大家可以根据字的需求进行优化,本篇博客写的是根据数据库表字段生成mybaties 映射配置文件**mapper.xml,之后还会陆续更新mybaties对应的接口。欢迎大家来点评,指出不足之处。
下面试freemarker工具类
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.Locale;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class Freemarker {
/**
* 打印到控制台(测试)
* @param ftlName
*/
public static void print(String ftlName, Map<String,Object> root, String ftlPath) throws Exception{
try {
Template temp = getTemplate(ftlName, ftlPath); //通过Template可以将模板文件输出到相应的流
temp.process(root, new PrintWriter(System.out));
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 输出到输出到文件
* @param ftlName ftl文件
* @param root 传入的map
* @param outFile 输出后的文件全部路径
* @param filePath 输出前的文件上部路径
*/
public static void printFile(String ftlName, Map<String,Object> root, String outFile, String filePath, String ftlPath) throws Exception{
try {
File file = new File( filePath + outFile);
if(!file.getParentFile().exists()){ //判断有没有父路径,就是判断文件整个路径是否存�?
file.getParentFile().mkdirs(); //不存在就全部创建
}
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"));
Template template = getTemplate(ftlName, ftlPath);
template.process(root, out); //模版输出
out.flush();
out.close();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 通过文件名加载模�?
* @param ftlName
*/
public static Template getTemplate(String ftlName, String ftlPath) throws Exception{
try {
Configuration cfg = new Configuration(); //通过Freemaker的Configuration读取相应的ftl
cfg.setEncoding(Locale.CHINA, "utf-8");
cfg.setDirectoryForTemplateLoading(new File(ftlPath)); //设定去哪里读取相应的ftl模板文件
Template temp = cfg.getTemplate(ftlName); //在模板文件目录中找到名称为name的文�?
return temp;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
java bean实体类结合上一篇生成的
public class Student {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这是freemarker模板文件mapperMysqlTemplate.ftl
<?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="${objectName}Mapper">
<!-- 新增-->
<insert id="save" parameterType="${pack}">
insert into ${table}(
<#list fieldList as var>
${var},
</#list>
${id}
) values (
<#list fieldList as var>
${r"#{"}${var}${r"}"},
</#list>
${r"#{"}${id}${r"}"}
)
</insert>
<!-- 删除-->
<delete id="
版权声明:本文为m13653423731原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。