SqlMakerWord文档格式.docx
- 文档编号:1015330
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:13
- 大小:17.50KB
SqlMakerWord文档格式.docx
《SqlMakerWord文档格式.docx》由会员分享,可在线阅读,更多相关《SqlMakerWord文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
//maker.addArg("
因为SQL值已经解析完毕,再次设定参数值会发生异常。
二,使用举例
使用例1:
当然没有设定任何参数时,将返回原内容。
maker.getSql()返回值:
"
使用例2:
当SQL后有分号时,自动删除
SELECT*FROMemp;
"
maker.getSql()返回值:
使用例3:
当SQL后有制表符,空格,换行符时,自动删除
"
使用例4:
当SQL注释内容不合法时,抛出异常
SELECT*FROMemp/*hoge"
maker.getSql()抛出TokenNotClosedRuntimeException异常
使用例5:
当SQL有绑定变量时,设定的参数名要与读入的注释/*与*/之间的变量名相同,且变量名与注释之间不允许有空格
SELECT*FROMempWHEREempno=/*empno*/1AND1=1"
//将变量名直接替换成值7788
SELECT*FROMempWHEREempno=7788AND1=1"
使用例6:
当SQL有判断条件IF时会根据传入的参数值动态生成SQL
SELECT*FROMemp
/*IFjob!
=null*/
WHEREjob=/*job*/'
XXX'
/*END*/
SELECT*FROMempWHEREjob=7788"
使用例7:
当SQL有IF判断嵌套时
/*IFparam1!
sql1
/*IFparam2!
sql2
/*END*/
例1:
未传入参数
例2:
传入以下参数
param1"
null,String.class);
param2"
"
hoge"
String.class);
例3:
value1"
value2"
例4:
sql1
使用例8:
SQL有IF/ELSE判断时
SELECT*FROMempWHERE
job=/*job*/'
--ELSE
jobisnull
未传入参数时:
SELECT*FROMempWHEREjobisnull"
传入以下参数时:
SELECT*FROMempWHEREjob='
developer'
使用例9:
SQL有false/true常量值时
/*IFfalse*/
aaa
bbb=/*bbb*/123
Integerbbb=newInteger(1234);
bbb"
bbb,bbb.getClass());
bbb=1234"
使用例10:
SQL有false/true常量嵌套时
--ELSE
bbb
/*IFfalse*/
ccc
--ELSE
ddd
未传参数:
bbbddd"
使用例11:
SQL中IF/ELSE有/*BEGIN*/时,由于前面条件不满足所产生的多余AND会被自动清除
/*BEGIN*/
WHERE
/*IFfalse*/
aaa
--ELSE
ANDdeptno=10
/*END*/
SELECT*FROMempWHEREdeptno=10"
使用例12:
SQL中多个IF判断之外有/*BEGIN*/时
/*IFjob!
job=/*job*/'
/*IFdeptno!
=null*/
ANDdeptno=/*deptno*/99
maker.addArg("
deptno"
null,Integer.class);
newInteger(20),Integer.class);
ANDdeptno=20"
SELECT*FROMempWHEREdeptno=20"
//AND被自动清除
使用例13:
SQL有BETWEEN…AND…时
/*BEGIN*/
/*IFtrue*/
aaaBETWEEN/*beginno*/111AND/*endno*/999
传入以下参数:
beginno"
888,Integer.class);
endno"
999,Integer.class);
WHEREaaaBETWEEN888AND999"
使用例14:
SQL有IN时,传入集合类型
SELECT*FROMemp
WHEREdeptnoIN/*deptnoList*/(10,20,30)
ORDERBYename
ListdeptnoList=newArrayList();
deptnoList.add(newInteger(100));
deptnoList.add(newInteger(200));
deptnoList"
deptnoList,List.class);
SELECT*FROMempWHEREdeptnoIN(100,200)ORDERBYename"
即传入的集合类型会自动生成一个被括号包围的一览值。
使用例15:
SQL有IN时,,传入数组类型
int[]deptnoArray={100,200};
deptnoArray,deptnoArray.getClass());
使用例16:
SQL有IN时,传入字符串数组
SELECT*
FROM
emp
WHERE
enameIN/*enames*/('
AAAA'
'
BBBB'
)
ANDjobIN/*jobs*/('
CCCC'
'
DDDD'
String[]enames={"
SCOTT"
MARY"
};
String[]jobs={"
ANALYST"
FREE"
enames"
enames,enames.getClass());
jobs"
jobs,jobs.getClass());
SELECT*FROMempWHEREenameIN('
SCOTT'
MARY'
)ANDjobIN('
ANALYST'
FREE'
)"
使用例17:
SQL有问号参数时
SELECT*FROMaWHEREsalBETWEEN?
AND?
$1"
newInteger(0),Integer.class);
$2"
newInteger(1000),Integer.class);
SELECT*FROMaWHEREsalBETWEEN0AND1000"
使用例18:
SQL有绑定变量,问号参数两方时
SELECT
*
col1<
/*col1*/
ANDcol2BETWEEN?
col1"
newInteger(600),Integer.class);
SELECT*FROMempWHEREcol1<
600ANDcol2BETWEEN0AND1000"
使用例19:
SQL为插入语句时
INSERTINTOITEM(ID,NUM)VALUES(/*id*/1,/*num*/20)"
id"
newInteger(10),Integer.class);
num"
INSERTINTOITEM(ID,NUM)VALUES(10,20)"
使用例20:
SQL为更新语句时
UPDATEITEMSETID=/*id*/1,NUM=/*num*/999)
UPDATEITEMSETID=100,NUM=300"
使用例21:
SQL有注释时
SELECTAAA,BBB--UGO
FROMHOGEWHEREAAA=/*moge*/aaa
ANDFUGA=/*PIRO*/ccc
moge"
test1"
Integer.class);
PIRO"
test2"
SELECTAAA,BBB–UGO
FROMHOGEWHEREAAA='
test1'
ANDFUGA=/*PIRO*/ccc"
此时PIRO因为两边有空格存在,并未被解析成绑定参数,而是原样被转变成注释内容。
使用例22:
SQL有HINT时
SELECT/*+INDEX(TABLE_NAMEINDEX_NAME)*/AAAFROMHOGE
SELECT/*+INDEX(TABLE_NAMEINDEX_NAME)*/AAAFROMHOGE"
使用例23:
SQL的--注释中的问号[?
]会被自动删除
SELECTAAA
--comment?
?
--comment2?
FROMHOGE
--comment
--comment2
FROMHOGE"
使用例24:
SQL的/**/注释中的问号[?
SELECTAAAFROMHOGEwhere
/*IFhoge!
=null*/
aa=/*fuga*/'
gaga'
--ELSEbb=?
/*comment?
*/
fuga"
SELECTAAAFROMHOGEwhereaa='
test2'
/*comment*/"
使用例25:
SQL有问号参数且注释中有问号时
SELECTAAAFROMHOGEwhereaa=?
--comment?
newInteger(100),Integer.class);
SELECTAAAFROMHOGEwhereaa=100--comment"
问号参数被替换成传入的值,但注释中的问号被自己删除。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SqlMaker