添加freemarker执行工具

main
xueqingkun 1 year ago
parent e4a9621385
commit 6f57ee9d6e

@ -19,6 +19,7 @@
<hutool.version>5.8.16</hutool.version>
<mybatis-puls-spring-boot.version>3.3.1</mybatis-puls-spring-boot.version>
<knife4j.version>3.0.3</knife4j.version>
<postgresql.version>42.2.18</postgresql.version>
</properties>
<dependencies>
@ -51,7 +52,7 @@
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.3.8</version>
<version>${postgresql.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
@ -80,6 +81,11 @@
<version>${knife4j.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
<build>

@ -0,0 +1,83 @@
package com.supervision.util.freemark;
import cn.hutool.core.util.ObjUtil;
import com.supervision.domain.IrKnowledge;
import com.supervision.service.IrKnowledgeService;
import freemarker.cache.TemplateLoader;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.Reader;
import java.io.StringReader;
/**
* Created by xiaoj on 2016/9/8.
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class DatabaseTemplateLoader implements TemplateLoader {
private final IrKnowledgeService irKnowledgeService;
@Override
public Object findTemplateSource(String templateId) {
try {
IrKnowledge irKnowledge = irKnowledgeService.getById(templateId);
long lastModified = ObjUtil.isNull(irKnowledge.getUpdateTime()) ? 0L : irKnowledge.getUpdateTime().getNano();
return new StringTemplateSource(templateId, irKnowledge.getResultTemplate(),lastModified);
} catch (Exception e) {
return null;
}
}
@Override
public long getLastModified(Object templateSource) {
return ((StringTemplateSource) templateSource).lastModified;
}
@Override
public Reader getReader(Object templateSource, String encoding) {
return new StringReader(((StringTemplateSource) templateSource).source);
}
@Override
public void closeTemplateSource(Object templateSource) {
//do nothing
}
private static class StringTemplateSource {
private final String name;
private final String source;
private final long lastModified;
StringTemplateSource(String name, String source, long lastModified) {
if (name == null) {
throw new IllegalArgumentException("name == null");
}
if (source == null) {
throw new IllegalArgumentException("source == null");
}
if (lastModified < -1L) {
throw new IllegalArgumentException("lastModified < -1L");
}
this.name = name;
this.source = source;
this.lastModified = lastModified;
}
public boolean equals(Object obj) {
if (obj instanceof StringTemplateSource) {
return name.equals(((StringTemplateSource) obj).name);
}
return false;
}
public int hashCode() {
return name.hashCode();
}
}
}

@ -0,0 +1,15 @@
package com.supervision.util.freemark;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FreemarkerConfiguration {
@Bean("databaseFreemarkerConfiguration")
public freemarker.template.Configuration databaseTemplateLoader(DatabaseTemplateLoader databaseTemplateLoader) {
freemarker.template.Configuration configuration = new freemarker.template.Configuration(freemarker.template.Configuration.VERSION_2_3_30);
configuration.setTemplateLoader(databaseTemplateLoader);
return configuration;
}
}

@ -1,4 +1,4 @@
package com.supervision.util;
package com.supervision.util.mybatis;
import org.apache.ibatis.builder.StaticSqlSource;
import org.apache.ibatis.mapping.*;

@ -1,5 +1,6 @@
package com.supervision.util;
package com.supervision.util.mybatis;
import com.supervision.util.mybatis.RowMapperStatementBuilder;
import org.apache.ibatis.exceptions.TooManyResultsException;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Component;

@ -1,7 +1,10 @@
package com.supervision;
import com.supervision.service.IrKnowledgeService;
import com.supervision.util.RowSqlMapper;
import com.supervision.util.mybatis.RowSqlMapper;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
@ -10,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -28,18 +33,33 @@ class AskApplicationTests {
@Autowired
private RowSqlMapper sqlMapper;
@Test
void RowSqlMapperTest() {
void rowSqlMapperTest() {
HashMap<String, Object> params = new HashMap<>();
params.put("id", "111");
//params.put("dept_name","沈阳公安");
// and dept_name= #{dept_name}
//<if test="dept_name != null">
// and dept_name= #{dept_name}
// </if>
List<Map<String, Object>> maps = sqlMapper.selectList("<script> select * from interro_robot.ir_robot_config where id = #{id} <if test= \"dept_name != null\">" +
" and dept_name= #{dept_name} </if> </script>",params);
System.out.println(maps);
}
@Autowired
private Configuration databaseFreemarkerConfiguration;
@Test
void dbFreemarkerLoadTest() throws IOException, TemplateException {
Template temp = databaseFreemarkerConfiguration.getTemplate("1770984442920292354");
StringWriter writer = new StringWriter();
HashMap<String, Object> params = new HashMap<>();
params.put("jykh_count","ss");
temp.process(params, writer);
System.out.println(writer);
writer.close();
}
}

Loading…
Cancel
Save