SQL文的管理和解析(二)PrepareSQL----SQL参数替换的简单语法及对应的数据结构
来源:互联网 发布:linux 网络唤醒 编辑:程序博客网 时间:2024/05/29 16:51
在可配置的SQL中,必须是可以配置参数的。为了实现参数的配置,我们定义了两个语法。
1.":参数"语法
":参数"语法是SQL的基本语法,在实际的应用中,我们可以把冒号后的参数替换成需要的数值,这是SQL的基本语法。
例一:
如上,在实际的运行中,可以把":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的基本语法。
例一:
SELECT T1.ACTIONID
FROM ACTIONINFO T1, FRAMEINFO T2, ACTIONAUTHORITY T3
WHERE T3.ROLEID = :roleID
AND T3.ACTIONID = T1.ACTIONID
AND T1.FRAMEID = T2.FRAMEID
FROM ACTIONINFO T1, FRAMEINFO T2, ACTIONAUTHORITY T3
WHERE T3.ROLEID = :roleID
AND T3.ACTIONID = T1.ACTIONID
AND T1.FRAMEID = T2.FRAMEID
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);
FROM Certificate T1
WHERE 1 = 1
AND T1.hash ='123' AND T1.id='456'
FROM Certificate T1
WHERE 1 = 2
OR T1.hash ='123' AND T1.id='456'
OR T1.hash ='789' AND T1.id='ABC'
- SQL文的管理和解析(二)PrepareSQL----SQL参数替换的简单语法及对应的数据结构
- sql和Mongodb对应的一些语法--mongodb
- MongoDB 与 SQL 的语法对应关系
- SQL Server 管理常用的SQL和T-SQL(二)
- SQL文的管理和解析(一)利用Spring的Resource管理SQL的XML配置文件
- 简单但有用的 SQL-L替换
- Hibernate映射类型、对应的Java时间和日期类型及对应的标准SQL类型
- 抓报错对应的SQL
- SQL文的管理和解析(三)PreparedSql的实现
- 一条简单SQL语句的构成及语句解析
- Sql Server数据库 实验二 数据库及数据库对象的创建和管理
- SQL语句的基本语法二
- 【数据库】 sql的一些基本语法(二)
- 简单使用触发器(详细) SQL触发器的使用及语法
- 一种简单的SQL语法检测方法
- SQL 简单存储过程的使用语法
- SQL使用视图的简单语法大全
- SQL一些常用的简单语法
- SQL注入专题
- 数据库只读的解决办法
- 使用multimap
- 硬件文章
- intel和amd的发展历史
- SQL文的管理和解析(二)PrepareSQL----SQL参数替换的简单语法及对应的数据结构
- .NET、ASP.NET控件及源码大汇总
- 应用程序向IIS传送身份验证
- map删除
- 图像透明拷贝 - 不同方法的效率比较
- Berkeley DB for C(2)
- 微软题目解析
- HIbernate 3.2 java.lang.IllegalArgumentException: object is not an instance of declaring class
- csdn.net