rapid系列:发布一款动态构造sql的工具: XsqlBuilder

XsqlBuilder用于可以动态构造sql语句,避免在构造sql时使用过多的 if 判断,与SafeSqlProcesser集成提供防止sql注入攻击,与DataModifier集成完成数据类型的转换


[b][size=large]动态构造sql示例:[/size] [/b]

   
String xsql = "select * from user where 1=1
/~ and username = {username} ~/
/~ and password = {password} ~/
/~ and age = [age] ~/
/~ and sex = [sex] ~/"

Map filters = new HashMap();
filters.put("username", "badqiu");
filters.put("age", "12");
filters.put("sex", "");

XsqlFilterResult result = xsqlBuilder.applyFilters(xsql,filters);



[b][size=large]构造生成的结果result.getXsql()将会等于[/size][/b]

select * from user where 1=1 and username={username} and age=12


[b][size=large]被过滤删除的段:[/size][/b]
[color=red]/~ and password = {password} ~/[/color]这一段由于在filters中password不存在而没有被构造出来
[color=red]/~ and sex = [sex] ~/[/color]由于sex的值为空串也没有被构造出来


[b][size=large]最后result.acceptedFilters值[/size][/b]



Map acceptedFilters = result.getAcceptedFilters();
会等于:
{username=badqiu}



[b][size=large]相关符号介绍:[/size][/b]

/~ segment... ~/ 为一个条件代码块
{key} 过滤器中起标记作用的key,作为后面可以替换为sql的?,或是hql的:username标记
[key] 将直接替换为key value


[b][size=large]数据类型转换示例:[/size][/b]

select * from user where and 1=1 /~ age={age?int} ~/
将会将Map filters中key=age的值转换为int类型

项目地址:[url]http://code.google.com/p/rapid-xsqlbuilder/[/url]

下载地址:[url]http://rapid-xsqlbuilder.googlecode.com/files/xsqlbuilder-1.0.zip[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值