https://github.com/threefish/nutz-sqltpl
nutz中使用xml管理sql模版(默认beetl引擎渲染,可自定义扩展为其他模版引擎)
https://github.com/threefish/nutz-sqltpl
Last synced: 8 months ago
JSON representation
nutz中使用xml管理sql模版(默认beetl引擎渲染,可自定义扩展为其他模版引擎)
- Host: GitHub
- URL: https://github.com/threefish/nutz-sqltpl
- Owner: threefish
- Created: 2019-02-19T10:00:31.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-01-21T23:23:43.000Z (over 4 years ago)
- Last Synced: 2025-03-28T01:50:40.804Z (about 1 year ago)
- Language: Java
- Homepage:
- Size: 82 KB
- Stars: 10
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
nutz-sqltpl SQL模板实现
==================================
### 配合[NutzCodeInsight](https://plugins.jetbrains.com/plugin/10311-nutzcodeinsight)插件使用更香
[源码](https://github.com/threefish/nutz-sqltpl)
### 支持多种模板引擎
默认采用beetl引擎(注意,这不是与BeetlSql的集成),其他模版引擎可以自己扩展,详情看源码
### [spring 版本请看这里](https://gitee.com/threefish/spring-boot-sqltpl)
### 用法
- 然后在pom.xml中
```xml
com.github.threefish
nutz-sqltpl
最新版本
```
maven坐标 [https://mvnrepository.com/artifact/com.github.threefish/nutz-sqltpl](https://mvnrepository.com/artifact/com.github.threefish/nutz-sqltpl)
##### 然后在ioc.js中
```javascript
var ioc = {
sqlTplIocEventListener: {
type: "com.github.threefish.nutz.sqltpl.SqlTplIocEventListener",
args: [{refer: '$ioc'}]
},
beetlSqlTemplteEngineImpl: {
type: "com.github.threefish.nutz.sqltpl.templte.beetl.BeetlSqlTemplteEngineImpl",
events: {
create: "init"
},
fields: {
statementStart : "",//可修改(如需要使用xmltag的只支持 xml tag,不支持其他xml tag)
statementEnd :""//可修改
}
}
}
}
```
然后,在MainSetup.init内加入下面的语句, 启用热加载
```java
SqlsTplHolder.DEVELOPER_MODE = true;
```
#### 简单用法
```java
@SqlsXml("Bean1.xml")
public class Bean1 implements ISqlTpl {
private SqlsTplHolder sqlsTplHolder;
@Override
public SqlsTplHolder getSqlTplHolder() {
return this.sqlsTplHolder;
}
@Override
public void setSqlTpl(SqlsTplHolder sqlsTplHolder) {
this.sqlsTplHolder = sqlsTplHolder;
}
}
```
#### 复杂用法,你需要一个Service文件 实现 ISqlDaoExecuteService 接口
```java
@IocBean(args = {"refer:dao"}, name = "companyService")
@SqlsXml("CompanyService.xml")
public class CompanyServiceImpl extends BaseServiceImpl implements ISqlTpl, CompanyService, ISqlDaoExecuteService {
/**
* 1、我是必须要有的
* 2、可以不实现 ISqlDaoExecuteService 接口,用 SqlsTplHolder 直接渲染sql自己再进行操作
*/
private SqlsTplHolder sqlsTplHolder;
public CompanyServiceImpl(Dao dao) {
super(dao);
}
@Override
public SqlsTplHolder getSqlsTplHolder() {
return this.sqlsTplHolder;
}
@Override
public SqlsTplHolder getSqlTplHolder() {
return this.sqlsTplHolder;
}
@Override
public void setSqlTpl(SqlsTplHolder sqlsTplHolder) {
this.sqlsTplHolder = sqlsTplHolder;
}
@Override
public Dao getDao() {
return dao;
}
@Override
public Entity getEntity() {
return super.getEntity();
}
@Override
public Class getEntityClass() {
return super.getEntityClass();
}
/**
* 分页查询列表
* @param param
* @param pager
* @return
*/
@Override
public List queryAllBySql(NutMap param, Pager pager) {
//此处queryAll对应
return queryMapBySql("queryAll", param);
}
}
```
你需要一个XML文件来管理当前service的Sql(请把我和CompanyServiceImpl放在一起,或采用相对路径自己摸索)
#### 当模版语法 if()... for()...等等 取值表达式 ${}
来看一下例子
```xml
logistics_company
SELECT * from ${tableName}
if(isNotEmpty(name)){
where name like @name
}
```
