# ug-template-engine
**Repository Path**: wolf7/ug-template-engine
## Basic Information
- **Project Name**: ug-template-engine
- **Description**: JAVA字符串模板引擎;便捷的工具调用返回、支持Groovy模板引擎。
目前使用它来做SQL字符串模板,配合HQL或NamedParameterJdbcTemplate使用,真香!
如果厌倦了XML繁琐的嵌套格式,值得尝试一下。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2022-07-07
- **Last Updated**: 2023-09-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
这里有瓜 ^-^
JAVA template engine; supports Groovy template engine. Easy to assemble strings.
JAVA模板引擎;支持Groovy模板引擎。可以方便的组装字符串。
## 用法
1. 添加依赖
maven
```xml
io.github.fddi
ug-template-core
0.2.5
```
gradle
```groovy
implementation 'io.github.fddi:ug-template-core:0.2.5'
```
2. 在resource/template下创建一个test.utp文件
使用IDEA,可下载插件 [Ug template File](https://plugins.jetbrains.com/plugin/18710-ug-template-file/versions/stable/182388),高亮语法
3. 调用模板
```java
Map params = new HashMap<>();
params.put("title", "something title");
params.put("time", "2022/7/25");
String[] contents = new String[]{
"something item 1", "something item 2", "something item 3"
};
params.put("contents", contents);
String html = new CombFactory().build()
.getComb("test.html", params);
System.out.println(html);
```
查看打印的html是否符合你的预期。
## SQL模板引擎
可用做SQL模板引擎,配合HQL或NamedParameterJdbcTemplate使用,真香!
已经厌烦了XML繁琐的嵌套格式,值得尝试。
> 模板已对入参SQL注入进行字符串校验。
1. 在resource/sql-template下创建一个sqltest.utp文件。
2. 调用模板
```java
Map params = new HashMap<>();
params.put("tag1", "表1");
params.put("tag2", "表2");
params.put("name", "赵");
params.put("sex", "");
params.put("age", "20,30");
String sql = new CombFactory().fileScan("sql-template")
.build()
.getComb("test.html", params);
System.out.println(sql);
```
查看打印的SQL是否符合你的预期。
3. 如果你使用JdbcTemplate
```java
namedParameterJdbcTemplate.query(sql, params);
```
## API
1. GStringTemplateEngine
支持groovy模板语法:GStringTemplateEngine ,[查看用法](http://www.groovy-lang.org/templating.html#_gstringtemplateengine)
2. $printIf{exp}
按行解析字符串,大括号中表达式为groovy语法,返回bol值:为true时解析行后字符串,否则忽略。
支持缩进语法,实现嵌套判断
```
$printIf{c02 !=null && !"".equals(c02)}and c02 like '%'||:c02||'%'
$printIf{c03 > 0}and c03 = :c03
and 1=1
```
3. $array{param}
如字符串"1,2,3,4,5"转换为'1','2','3','4','5'
4. $include{fileName.sectionName}
可以引用其他模板
## 配置
- 指定模板utp文件搜索路径
```java
new CombFactory().fileScan(String... scanPackages)
```
- 可以添加自定义解析器
> 注意是按行解析字符串
```java
new CombFactory().bind(CombFilter... filters)
```
- 可以自定义缓存机制,文件读取到的字符串自定义缓存
```java
new CombFactory().cache(CombCache cache)
```