java防sql注入的sql语句拼接工具sqlHandle

    我在做网站的时候有一个需要在不同的插入时间改变查询的逻辑结构,这个时候用PreparedStatement就不太适合了灵活性太差。所以我就写了一个sql拼接工具。它的原理是将sql语句段与值绑定在一起,然后在最后拼接的时候把值按顺序传人给PreparedStatement。这样我们任意拼接我们的sql语句还可以防止sql注入的困扰。

   平时我都是用Hibernate进行操作,但有时我多表查询是Hibernate的灵活性就也受到了限制,所以sqlHandle还是适用不少情况的。

  我已经将代码上传到osc代码托管服务了http://git.oschina.net/plug/sqlHandle 欢迎有兴趣的同学可以加入进来来优化一下。

package com.sql.db;
/**
 * sql拼接测试代码
 * @author 梁前武 
 * www.apkplug.com
 */
public class test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		 //1
		 sqlHandle sql1=new sqlHandle();
	     sql1.Add("select * from user where " ,"",null).
	     Add("name=?","", "liling").
	     Add("age=?","and", 10);
	     System.out.println(sql1);   
	     //select * from user where    name=?  and age=? 
	     sql1.AddMore("LIMIT ?,?", "", new Object[]{1,2});
	     System.out.println(sql1);
	     //select * from user where    name=?  and age=?   LIMIT ?,? 
	     
	     //2
	     sqlHandle sql2=new sqlHandle();
	     sql2.Add("select * from friend where " ,"",null).
	     Add("myfriend=?","", "liling");
	     System.out.println(sql2);
	     // select * from friend where    myfriend=? 
	     sql1.AddMoreAndRep(" in(%s) ",sql2, "and", null);
	     System.out.println(sql1);
	     //select * from user where    name=?  and age=?   LIMIT ?,?  and  
	     //in(  select * from friend where    myfriend=? )  
	     //很明显sqlHandle添加时的顺序很关键
	     
	}

}

转载于:https://my.oschina.net/u/138488/blog/177111

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值