`
badqiu
  • 浏览: 670098 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

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

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


动态构造sql示例:

   
       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);


        
构造生成的结果result.getXsql()将会等于

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


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



最后result.acceptedFilters值


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



相关符号介绍:

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


数据类型转换示例:

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

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

下载地址:http://rapid-xsqlbuilder.googlecode.com/files/xsqlbuilder-1.0.zip
分享到:
评论
4 楼 暂不存在 2015-10-27  
怎么将{key}中的值替换掉
3 楼 暂不存在 2015-10-27  
怎么将date的值转换成Timestamp,{inDate?Timestamp}怎样吗?
2 楼 暂不存在 2015-10-27  
请问时间类型是Timestamp要怎么查?
1 楼 zingers 2008-07-03  
不错,这个很便利

相关推荐

Global site tag (gtag.js) - Google Analytics