Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz4j Spring R7
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7后台标准模板
iBiz4j Spring R7
提交
778c6584
提交
778c6584
编写于
5月 11, 2020
作者:
zhouweidong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
直接SQL支持?占位符,放置SQL注入
上级
628d0520
变更
4
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
66 行增加
和
39 行删除
+66
-39
%DE%Mapper.java.ftl
...YS_PKGPATH%/core/%MOD_PKGPATH%/mapper/%DE%Mapper.java.ftl
+5
-4
I%DE%Service.java.ftl
...PKGPATH%/core/%MOD_PKGPATH%/service/I%DE%Service.java.ftl
+2
-2
%DE%ServiceImpl.java.ftl
.../core/%MOD_PKGPATH%/service/impl/%DE%ServiceImpl.java.ftl
+7
-12
%DE%%ITEM%Rule.drl.ftl
...PRJ%-core/src/main/resources/rules/%DE%%ITEM%Rule.drl.ftl
+52
-21
未找到文件。
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/%MOD_PKGPATH%/mapper/%DE%Mapper.java.ftl
浏览文件 @
778c6584
...
...
@@ -6,6 +6,7 @@ package ${pub.getPKGCodeName()}.core.${item.getPSSystemModule().codeName?lower_c
import
java
.
util
.
List
;
import
org
.
apache
.
ibatis
.
annotations
.*;
import
java
.
util
.
Map
;
import
com
.
baomidou
.
mybatisplus
.
core
.
mapper
.
BaseMapper
;
import
com
.
baomidou
.
mybatisplus
.
extension
.
plugins
.
pagination
.
Page
;
import
com
.
baomidou
.
mybatisplus
.
core
.
metadata
.
IPage
;
...
...
@@ -54,7 +55,7 @@ public interface ${item.getCodeName()}Mapper extends BaseMapper<${item.getCodeNa
*
@
return
*/
@
Select
(
"${r'${sql}'}"
)
List
<
JSONObject
>
selectBySQL
(@
Param
(
"sql"
)
String
sql
);
List
<
JSONObject
>
selectBySQL
(@
Param
(
"sql"
)
String
sql
,
@
Param
(
"et"
)
Map
param
);
/**
*
自定义更新
SQL
...
...
@@ -62,7 +63,7 @@ public interface ${item.getCodeName()}Mapper extends BaseMapper<${item.getCodeNa
*
@
return
*/
@
Update
(
"${r'${sql}'}"
)
boolean
updateBySQL
(@
Param
(
"sql"
)
String
sql
);
boolean
updateBySQL
(@
Param
(
"sql"
)
String
sql
,
@
Param
(
"et"
)
Map
param
);
/**
*
自定义插入
SQL
...
...
@@ -70,7 +71,7 @@ public interface ${item.getCodeName()}Mapper extends BaseMapper<${item.getCodeNa
*
@
return
*/
@
Insert
(
"${r'${sql}'}"
)
boolean
insertBySQL
(@
Param
(
"sql"
)
String
sql
);
boolean
insertBySQL
(@
Param
(
"sql"
)
String
sql
,
@
Param
(
"et"
)
Map
param
);
/**
*
自定义删除
SQL
...
...
@@ -78,7 +79,7 @@ public interface ${item.getCodeName()}Mapper extends BaseMapper<${item.getCodeNa
*
@
return
*/
@
Delete
(
"${r'${sql}'}"
)
boolean
deleteBySQL
(@
Param
(
"sql"
)
String
sql
);
boolean
deleteBySQL
(@
Param
(
"sql"
)
String
sql
,
@
Param
(
"et"
)
Map
param
);
<#
comment
>
1
:
N
关系中,在子实体中创建父实体的实例对象
</#
comment
>
<#
if
de
.
getMinorPSDERs
??
&&
de
.
getMinorPSDERs
()??>
...
...
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/%MOD_PKGPATH%/service/I%DE%Service.java.ftl
浏览文件 @
778c6584
...
...
@@ -32,8 +32,8 @@ public interface I${item.codeName}Service extends IService<${item.codeName}>{
<@
addIDESerivceBody
/>
List
<
JSONObject
>
select
(
String
sql
);
boolean
execute
(
String
sql
);
List
<
JSONObject
>
select
(
String
sql
,
Map
param
);
boolean
execute
(
String
sql
,
Map
param
);
}
<#
comment
>
NoSQL
存储
-
MongoDB
</#
comment
>
...
...
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/%MOD_PKGPATH%/service/impl/%DE%ServiceImpl.java.ftl
浏览文件 @
778c6584
...
...
@@ -18,6 +18,7 @@ import java.io.Serializable;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
List
;
import
java
.
util
.
Set
;
import
java
.
util
.
Map
;
import
java
.
util
.
HashSet
;
import
java
.
util
.
HashMap
;
import
java
.
util
.
Collection
;
...
...
@@ -41,12 +42,6 @@ import ${pub.getPKGCodeName()}.core.${item.getPSSystemModule().getCodeName()?low
import
${
pub
.
getPKGCodeName
()}.
core
.${
item
.
getPSSystemModule
().
getCodeName
()?
lower_case
}.
service
.
I
${
de
.
getCodeName
()}
Service
;
import
${
pub
.
getPKGCodeName
()}.
util
.
helper
.
CachedBeanCopier
;
<#
if
item
.
getAllPSDELogics
()??>
<#
list
item
.
getAllPSDELogics
()
as
logic
>
//
import
${
pub
.
getPKGCodeName
()}.
core
.${
item
.
getPSSystemModule
().
getCodeName
()?
lower_case
}.
service
.
logic
.
I
${
de
.
getCodeName
()}${
logic
.
getCodeName
()}
Logic
;
</#
list
>
</#
if
>
<#
comment
>
SQL
存储
-
Mybatis
</#
comment
>
<#
if
de
.
getStorageMode
()==
1
>
...
...
@@ -519,24 +514,24 @@ public class ${item.getCodeName()}ServiceImpl extends ServiceImpl<${de.getCodeNa
<#
comment
>
输出自定义
sql
查询
</#
comment
>
@
Override
public
List
<
JSONObject
>
select
(
String
sql
){
return
this
.
baseMapper
.
selectBySQL
(
sql
);
public
List
<
JSONObject
>
select
(
String
sql
,
Map
param
){
return
this
.
baseMapper
.
selectBySQL
(
sql
,
param
);
}
@
Override
@
Transactional
public
boolean
execute
(
String
sql
){
public
boolean
execute
(
String
sql
,
Map
param
){
if
(
sql
==
null
||
sql
.
isEmpty
())
{
return
false
;
}
if
(
sql
.
toLowerCase
().
trim
().
startsWith
(
"insert"
))
{
return
this
.
baseMapper
.
insertBySQL
(
sql
);
return
this
.
baseMapper
.
insertBySQL
(
sql
,
param
);
}
if
(
sql
.
toLowerCase
().
trim
().
startsWith
(
"update"
))
{
return
this
.
baseMapper
.
updateBySQL
(
sql
);
return
this
.
baseMapper
.
updateBySQL
(
sql
,
param
);
}
if
(
sql
.
toLowerCase
().
trim
().
startsWith
(
"delete"
))
{
return
this
.
baseMapper
.
deleteBySQL
(
sql
);
return
this
.
baseMapper
.
deleteBySQL
(
sql
,
param
);
}
log
.
warn
(
"暂未支持的SQL语法"
);
return
true
;
...
...
SLN/%PUBPRJ%-core/src/main/resources/rules/%DE%%ITEM%Rule.drl.ftl
浏览文件 @
778c6584
...
...
@@ -9,6 +9,7 @@ package ${pub.getPKGCodeName()}.${de.getPSSystemModule().codeName?lower_case}.lo
<#
comment
>
插入逻辑参数
</#
comment
>
<#
if
delogic
.
getPSDELogicParams
??
&&
delogic
.
getPSDELogicParams
()??>
import
java
.
util
.
Map
;
import
java
.
util
.
HashMap
;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
<#
list
delogic
.
getPSDELogicParams
()
as
logicParam
>
<#
if
logicParam
.
isDefault
()==
true
>
...
...
@@ -100,12 +101,13 @@ ruleflow-group "${logicName+deLogicNode.getCodeName()?lower_case}"
</#
if
>
<#
elseif
deLogicNode
.
getLogicNodeType
()==
'RAWSQLCALL'
><#
comment
>
直接
SQL
</#
comment
>
<#
if
deLogicNode
.
getPSDELogicNodeParams
()??><#
comment
>
是否包含参数列表
</#
comment
>
String
strSql
=${
getCallSQL
(
deLogicNode
)};
<@
getCallSQL2
deLogicNode
/>
<#
else
>
Map
param
=
null
;
String
strSql
=
"${srfjavasqlcode('${deLogicNode.getParam("
PARAM4
","")}')}"
;
</#
if
>
<#
if
deLogicNode
.
getDstPSDELogicParam
??
&&
deLogicNode
.
getDstPSDELogicParam
()??
><#
comment
>
配置返回参数
</#
comment
>
java
.
util
.
List
<
JSONObject
>
entities
=
iBzSys
${
de
.
codeName
?
lower_case
?
cap_first
}
DefaultService
.
select
(
strSql
);//
SQL
调用
java
.
util
.
List
<
JSONObject
>
entities
=
iBzSys
${
de
.
codeName
?
lower_case
?
cap_first
}
DefaultService
.
select
(
strSql
,
param
);//
SQL
调用
if
(
entities
.
size
()>
0
){
<#
assign
targetLogicParam
=
deLogicNode
.
getDstPSDELogicParam
()>
JSONObject
entity
=
entities
.
get
(
0
);
...
...
@@ -166,34 +168,63 @@ ruleflow-group "${logicName+deLogicNode.getCodeName()?lower_case}"
</#
list
>
</#
if
>
<#
comment
>
获取
String
.
format
拼接的
sql
</#
comment
>
<#
function
getCallSQL
deLogicNode
>
<#
assign
sql
=
srfjavasqlcode
(
'${deLogicNode.getParam("PARAM4","")}'
)>
<#
comment
>
将
sql
中的
?
替换为
%
s
,如:
select
*
from
table
where
id
=?
;
select
*
from
table
where
id
=
'%s'
</#
comment
>
<#
assign
sql
=
sql
?
replace
(
'%'
,
'%%'
)?
replace
(
'?'
,
'%s'
)>
<#
assign
strSQL
=
"String.format(
\"
"
+
sql
+
"
\"
,"
>
<#--<#
comment
>
获取
String
.
format
拼接的
sql
</#
comment
>-->
<#--<#
function
getCallSQL
deLogicNode
>-->
<#--<#
assign
sql
=
srfjavasqlcode
(
'${deLogicNode.getParam("PARAM4","")}'
)>-->
<#--<#
comment
>
将
sql
中的
?
替换为
%
s
,如:
select
*
from
table
where
id
=?
;
select
*
from
table
where
id
=
'%s'
</#
comment
>-->
<#--<#
assign
sql
=
sql
?
replace
(
'%'
,
'%%'
)?
replace
(
'?'
,
'%s'
)>-->
<#--<#
assign
strSQL
=
"String.format(
\"
"
+
sql
+
"
\"
,"
>-->
<#--<#
list
deLogicNode
.
getPSDELogicNodeParams
()
as
nodeParam
>-->
<#--<#
assign
sqlParam
=
""
>-->
<#--<#
if
nodeParam
.
getSrcValueType
()==
'SRCDLPARAM'
><#
comment
>
源逻辑参数
</#
comment
>-->
<#--<#
assign
srcPSDELogicParam
=
nodeParam
.
getSrcPSDELogicParam
()>-->
<#--<#
assign
srcFieldName
=
nodeParam
.
getSrcFieldName
()>-->
<#--<#
if
srcPSDELogicParam
.
getParamPSDataEntity
??
&&
srcPSDELogicParam
.
getParamPSDataEntity
()??><#
comment
>
源逻辑参数选择了实体
</#
comment
>-->
<#--<#
assign
sqlParam
=
logicName
+
srcPSDELogicParam
.
getCodeName
()?
lower_case
+
".get(
\"
"
+
srcFieldName
?
lower_case
+
"
\"
)"
>-->
<#--</#
if
>-->
<#--<#
elseif
nodeParam
.
getSrcValueType
()==
'SRCVALUE'
><#
comment
>
直接值
</#
comment
>-->
<#--<#
assign
sqlParam
=
nodeParam
.
getSrcValue
()>-->
<#--<#
else
>-->
<#--<#
assign
sqlParam
=
"null"
><#
comment
>
暂未支持其余准备参数设置
</#
comment
>-->
<#--</#
if
>-->
<#--<#
if
nodeParam
.
getSrcValueType
()==
'SRCVALUE'
>-->
<#--<#
assign
strSQL
=
strSQL
+
"
\"
"
+
sqlParam
+
"
\"
"
>-->
<#--<#
else
>-->
<#--<#
assign
strSQL
=
strSQL
+
sqlParam
>-->
<#--</#
if
>-->
<#--<#
if
nodeParam_has_next
>-->
<#--<#
assign
strSQL
=
strSQL
+
","
>-->
<#--</#
if
>-->
<#--</#
list
>-->
<#--<#
assign
strSQL
=
strSQL
+
")"
>-->
<#--<#
return
strSQL
>-->
<#--</#
function
>-->
<#
macro
getCallSQL2
deLogicNode
>
Map
param
=
new
HashMap
();
<#
comment
>
准备参数列表
</#
comment
>
<#
list
deLogicNode
.
getPSDELogicNodeParams
()
as
nodeParam
>
<#
assign
sqlParam
=
""
>
<#
if
nodeParam
.
getSrcValueType
()==
'SRCDLPARAM'
><#
comment
>
源逻辑参数
</#
comment
>
<#
assign
srcPSDELogicParam
=
nodeParam
.
getSrcPSDELogicParam
()>
<#
assign
srcFieldName
=
nodeParam
.
getSrcFieldName
()>
<#
if
srcPSDELogicParam
.
getParamPSDataEntity
??
&&
srcPSDELogicParam
.
getParamPSDataEntity
()??><#
comment
>
源逻辑参数选择了实体
</#
comment
>
<#
assign
sqlParam
=
logicName
+
srcPSDELogicParam
.
getCodeName
()?
lower_case
+
".get(
\"
"
+
srcFieldName
?
lower_case
+
"
\"
)"
>
<#
assign
srcRefDEFieldCodeName
=
srcPSDELogicParam
.
getParamPSDataEntity
().
getPSDEField
(
srcFieldName
).
codeName
>
<#
assign
sqlParam
=
logicName
+
srcPSDELogicParam
.
getCodeName
()?
lower_case
+
".get"
+
srcRefDEFieldCodeName
?
cap_first
+
"()"
>
<#
else
>
//
暂不支持非实体的逻辑参数赋值
!
</#
if
>
<#
elseif
nodeParam
.
getSrcValueType
()==
'SRCVALUE'
><#
comment
>
直接值
</#
comment
>
<#
assign
sqlParam
=
nodeParam
.
getSrcValue
()
>
<#
assign
sqlParam
=
"
\"
"
+
nodeParam
.
getSrcValue
()+
"
\"
"
>
<#
else
>
<#
assign
sqlParam
=
"null"
><#
comment
>
暂未支持其余准备参数设置
</#
comment
>
</#
if
>
<#
if
nodeParam
.
getSrcValueType
()==
'SRCVALUE'
>
<#
assign
strSQL
=
strSQL
+
"
\"
"
+
sqlParam
+
"
\"
"
>
<#
else
>
<#
assign
strSQL
=
strSQL
+
sqlParam
>
</#
if
>
<#
if
nodeParam_has_next
>
<#
assign
strSQL
=
strSQL
+
","
>
</#
if
>
param
.
put
(
"param${nodeParam_index}"
,${
sqlParam
});
</#
list
>
<#
comment
>
将占位符
?
替换为
#{
et
.
param1
}</#
comment
>
<#
assign
sql
=
srfjavasqlcode
(
'${deLogicNode.getParam("PARAM4","")}'
)>
<#
list
deLogicNode
.
getPSDELogicNodeParams
()
as
nodeParam
>
<#
assign
sql
=
sql
?
replace
(
"?"
,
"#"
+
"{et.param"
+
nodeParam_index
+
"}"
,
"f"
)>
</#
list
>
<#
assign
strSQL
=
strSQL
+
")"
>
<#
return
strSQL
>
</#
function
>
\ No newline at end of file
String
strSql
=
"${sql}"
;
</#
macro
>
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录