在可配置的SQL中,必须是可以配置参数的。为了实现参数的配置,我们定义了两个语法。
1.":参数"语法
":参数"语法是SQL的基本语法,在实际的应用中,我们可以把冒号后的参数替换成需要的数值,这是SQL的基本语法。
例一:
SELECT
T1.ACTIONID
FROM
ACTIONINFO T1, FRAMEINFO T2, ACTIONAUTHORITY T3
WHERE
T3.ROLEID
=
:roleID
AND
T3.ACTIONID
=
T1.ACTIONID
AND
T1.FRAMEID
=
T2.FRAMEID
如上,在实际的运行中,可以把":roleID"替换成输入的数值。
2.{:参数0 表达式 :参数1 表达式 :参数2 .......}语法
该语法的核心是{}。其中参数0是控制{}内能否执行的参数。如果参数0不存在,则{}内的所有语句都不执行,否则执行。参数1、参数2实际上是在参数0内部的,比如说参数0是一个Map,而参数1和2是Map中的对象。
例二:
FROM
Certificate T1
WHERE
1
=
2
{:hashMap
OR
T1.hash
=
:hash
AND
T1.id
=
:id}
3.数据结构对应
(1)对语法1的数据结构
语法1的数据结构很简单,就是一个Map,里面有一个参数名和参数值,比如对例一中的参数,可以用以下方法放入参数:
HashMap
<
String, Object
>
params
=
new
HashMap
<
String, Object
>
();
params.put(
"
:roleid
"
,
"
123456
"
);
针对以上数据,SQL文会变成
SELECT
T1.ACTIONID
FROM
ACTIONINFO T1, FRAMEINFO T2, ACTIONAUTHORITY T3
WHERE
T3.ROLEID
=
'
123456
'
AND
T3.ACTIONID
=
T1.ACTIONID
AND
T1.FRAMEID
=
T2.FRAMEID
(2)对语法2的数据结构
语法2的数据结构也是一个Map,不过稍微有点复杂,Map的key仍然是参数名,但是value会是Map或者是Map数组。对例二中的参数,可以用以下方法放入参数:
HashMap
<
String, Object
>
params
=
new
HashMap
<
String, Object
>
();
HashMap
<
String, Object
>
params2
=
new
HashMap
<
String, Object
>
();
params2.put(
"
:hash
"
,
"
123
"
);
params2.put(
"
:id
"
,
"
456
"
);
params.put(
"
:hashMap
"
, param2);
SQL会转换成
FROM
Certificate T1
WHERE
1
=
1
AND
T1.hash
=
'
123
'
AND
T1.id
=
'
456
'
如果放的是Map数组,则{}内的语句会重复,比如
FROM
Certificate T1
WHERE
1
=
2
OR
T1.hash
=
'
123
'
AND
T1.id
=
'
456
'
OR
T1.hash
=
'
789
'
AND
T1.id
=
'
ABC
'
1.":参数"语法
":参数"语法是SQL的基本语法,在实际的应用中,我们可以把冒号后的参数替换成需要的数值,这是SQL的基本语法。
例一:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
2.{:参数0 表达式 :参数1 表达式 :参数2 .......}语法
该语法的核心是{}。其中参数0是控制{}内能否执行的参数。如果参数0不存在,则{}内的所有语句都不执行,否则执行。参数1、参数2实际上是在参数0内部的,比如说参数0是一个Map,而参数1和2是Map中的对象。
例二:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
3.数据结构对应
(1)对语法1的数据结构
语法1的数据结构很简单,就是一个Map,里面有一个参数名和参数值,比如对例一中的参数,可以用以下方法放入参数:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
针对以上数据,SQL文会变成
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
(2)对语法2的数据结构
语法2的数据结构也是一个Map,不过稍微有点复杂,Map的key仍然是参数名,但是value会是Map或者是Map数组。对例二中的参数,可以用以下方法放入参数:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)