import java.io.InputStream;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import freemarker.cache.StringTemplateLoader;
import freemarker.template.Configuration;
public class Index {
public static void main(String[] arg) {
StringTemplateLoader STL = new StringTemplateLoader();
Configuration CONFIG = new Configuration();
CONFIG.setTemplateLoader(STL);
InputStream is = null;
try {
is = Index.class.getResourceAsStream("index.xml");
Document doc = DocumentHelper.parseText(IOUtils.toString(is));
List<Element> es = doc.selectNodes("sqls/sql");
for (Element e : es)
STL.putTemplate(e.attributeValue("id"), e.getTextTrim());
} catch (Exception e) {
throw new IllegalStateException(e);
} finally {
IOUtils.closeQuietly(is);
}
Map cond = new HashMap<String, Object>();
cond.put("userid", "'1'");
cond.put("tbl_main", "t_accountTransfer");
StringWriter sw = new StringWriter();
try {
//生成sql
CONFIG.getTemplate("queryAccountTransfers").process(cond, sw);
//打印
System.out.println(sw);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
freemarker: index.xml
<?xml version="1.0" encoding="UTF-8"?>
<sqls>
<sql id="queryAccountTransfers"><![CDATA[
<#assign where>
<#if date??>
and transferTime>=:date
</#if>
<#if date_end??>
and transferTime<=:date_end
</#if>
<#if money??>
and srcMoney>=:money
</#if>
<#if money_end??>
and srcMoney<=:money_end
</#if>
<#if scrAccountId??>
and srcAccountId=:scrAccountId
</#if>
<#if tgtAccountId??>
and tgtAccountId=:tgtAccountId
</#if>
</#assign>
<#assign where=where?trim>
select *
from ${tbl_main}
where isdelete=0 and userid=${userid}
${where}
]]></sql>
</sqls>
分享到:
相关推荐
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
以实际工程运用为背景,演示各种应用级技术的实现方式。 二、主要内容?本篇配备充分的实例,包含以下内容:* 界面线程与工作线程的基本原理* 定时任务* 小任务,即一次性的短任务* 进度条定制* 对话框定制* 滚动窗口...
一、课程简介 这是『Java学习指南系列』的第18篇教程 ,是Java开发的高级课程,介绍反射...〖网站开发〗系列:包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、项目应用、MyBatis、Redis等课程。
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...