超級簡單的sqlmap工具
以前也寫過一個,
這一把加入了動態(tài)sql,全部重寫了
與ibatis類似
#param_name# 使用參數(shù) ?(暫時不支持)
$param_name$ 直接替換
本工具特點:
提供了對ibatis常見功能的支持
核心類只有一個SqlMap.java
本工具適用與綜合查詢 (insert與update不推薦使用)
動態(tài)sql語句只支持 <notempty> 條件 (這個最常用了)
//根據(jù) <notempty name="xxx">content</notempty> 動態(tài)生成 sql
//參數(shù)xxx不為空時,才輸出 content,實現(xiàn)動態(tài)sql
//目前只支持常見的notempty判定
//可使用模板來動態(tài)生成sql語句,這樣將非常強大,常見的模板工具有 freemark,velocity等
//只是一個簡單的查詢工具,就不使用第三方的模板工具了
//{xxx} xxx 參數(shù)名
配置文件使用純文本格式,而非xml格式(有些非凡字符XML里搞來搞去很無趣)
配置文件格式 ajf_sql_map(xxx)=select * from x ,xxx表示sql name
傳入?yún)?shù)直接替換,參數(shù)封裝在map中
查詢返回結(jié)果,記錄行映射為map,key值從resultset的元數(shù)據(jù)中獲取,且全部為小寫,可參考作后的 rs2list部分代碼
其他代碼不一一給出,稍微搞一下即能整出來
sql-map配置文件只提供一個(統(tǒng)一配置治理,分散配置,各有所長了)
/WEB-INF/classes/ajf_sql_map.config
/**
* zju ee && cs
* 國產(chǎn)偶像top3 毛澤東,鄧小平,周恩來
* NBA偶像NO.1 Tim Duncan
* 頭號足球偶像 羅納爾多
* 小牛踏青 giscat@163.com
**/
一個簡單的例子
ajf_sql_map.config配置文件
支持//開頭的單行注釋
ajf_sql_map(q1)=select * from t_user
ajf_sql_map(q2)=select * from t_user where name like '%{name}%'
ajf_sql_map(q3)=select * from t_user where 2>1
<notempty name="name"> and name like '%{name}%' </notempty>
////ajf_sql_map(q1)=select * from t_user
///
/////ajf_sql_map(q1)=select * from t_user
///
ajf_sql_map(q4)=select * from t_user
ajf_sql_map(q5)=select * from t_user
測試代碼
Map map = jspUtil.getRequestModel(request);//把請求參數(shù)封裝到map中
List list = null;
try{
list = SqlMap.query("q1",map);
out.PRintln(list.size());
}catch(Exception e){
out.println(e);
}
try{
list = SqlMap.query("q2",map);
out.println(list.size());
}catch(Exception e){
out.println(e);
}
try{
list = SqlMap.query("q3",map);
out.println(list.size());
}catch(Exception e){
out.println(e);
}
try{
list = SqlMap.query("q4",map);
out.println(list.size());
}catch(Exception e){
out.println(e);
}
新聞熱點
疑難解答