您的位置:首页 > 数据库

SQL语句控制组件

2008-01-06 19:37 134 查看
以前在一些项目中,SQL语句经常需要写很多...个人感觉很麻烦,就根据以前用过的一个类写了自己的一些SQL语句处理类(Conditions),基本语句都能搞吧,不过还是可以有很多完善的地方的...不过米那么多时间重写了,凑合用就好拉.

语言是JAVA的,文件俺在后面付上.就自己本人而言,这个还是蛮好用滴.

前段时间做的项目都是JSF+SPRING+HIBERNATE的,其中的JSF和SPRING还不错,不过HIBERNATE...我就不多说了- -基本不怎么想用了...都直接用JDBC查了...总之用的不习惯就是了...同时,与自己写的SQL类配套的还有一个数据库查询,修改,删除的函数,同时还写了个类似HIBERNATE的VO基类.主要是用在查询语句上的,因为数据库返回的需要是一个List对象,所以就以VO对象作为List的基本元素.具体代码如下.

个人感觉这个还是蛮好用的,有兴趣的可以Q上联系,嘿嘿

Conditions类的代码如下:




/** *//**


*


*/


package com.sihitech.biplatform.common;




import java.util.Iterator;


import java.util.List;


import java.lang.Object;






/** *//**


* SQL语句选择条件对象<br>


* 能组成等于,大于,小于,大于等于,小于等于,like,in,条件嵌套的条件<br>


* @author alzq


*


*/




public class Conditions ...{




private StringBuffer condition;


private String tablesName;


private String itemsName;


private String orderItemsName;


private String orderType;


private String groupItemsName;


private int countTopLvCondition;


private int countAllCondition;






public Conditions(Class cls)...{


condition=new StringBuffer();


tablesName=cls.getSimpleName();


itemsName="";


orderItemsName="";


orderType="";


countTopLvCondition=0;


countAllCondition=0;


}






public Conditions()...{


condition=new StringBuffer();


tablesName="";


itemsName="";


orderItemsName="";


orderType="";


groupItemsName="";


countTopLvCondition=0;


countAllCondition=0;


}




public void delAllConditions()




...{


condition=new StringBuffer();


itemsName="";


orderItemsName="";


orderType="";


groupItemsName="";


countTopLvCondition=0;


countAllCondition=0;


}






public int getCountAllCondition() ...{


return countAllCondition;


}






public int getCountTopLvCondition() ...{


return countTopLvCondition;


}






public String getTablesName() ...{


return tablesName;


}






public void setTablesName(String tablesName) ...{


this.tablesName = tablesName;


}






public String getItemsName() ...{


return itemsName;


}






public void setItemsName(String itemsName) ...{


this.itemsName = itemsName;


}






/** *//**


* 获取实际的条件字符串


* @return


*/




public String getCondition()...{


String orderS="";


if(orderItemsName!=null && !orderItemsName.trim().equals(""))




...{


orderS=" order by "+orderItemsName;


if(orderType!=null && !orderType.trim().equals(""))




...{


orderS+=" "+orderType;


}


}


String groupS="";


if(groupItemsName!=null && !groupItemsName.trim().equals(""))




...{


orderS=" group by "+groupItemsName;


}


return condition.toString()+orderS+groupS;


}






/** *//**


* 获取实际的条件字符串与表名-hibernate


* @return


*/




public String getConditionAndTables()...{


String con=getCondition();


if(con.equals("") || con.trim().substring(0,6).equals("order ") || con.trim().substring(0,6).equals("group "))




...{


return "from "+tablesName+" "+con;


}


return "from "+tablesName+" where "+getCondition();


}






/** *//**


* 获取SQL语句


* @return


*/




public String getSQL()...{


return "select "+itemsName+" "+getConditionAndTables()+";";


}






/** *//**


* 添加条件语句


* @param itemName


* @param value


* @return


*/




private boolean addSQL(String sql,String operate)...{




try...{




if(condition.length()>0)...{


condition.append(operate+" ");


}


condition.append(sql);


countTopLvCondition++;


countAllCondition++;


return true;




}catch(Exception e)...{


System.out.println("Conditions addConditions Error!---alzq.baseClass.Conditions:");


System.out.println(sql);


return false;


}


}








/** *//**


* 添加相等条件


* @param itemName


* @param value


* @return


*/




public boolean addAndEquals(String itemName,Object value)...{


return addSQL(itemName+"='"+String.valueOf(value)+"' ","and");


}




public boolean addAndEquals(String itemName,int value)...{


return addSQL(itemName+"='"+String.valueOf(value)+"' ","and");


}




public boolean addAndEqualsItem(String itemName,String value)...{


return addSQL(itemName+"="+String.valueOf(value)+" ","and");


}






/** *//**


* 添加不相等条件


* @param itemName


* @param value


* @return


*/




public boolean addAndNotEquals(String itemName,Object value)...{


return addSQL(itemName+"!='"+String.valueOf(value)+"' ","and");


}




public boolean addAndNotEquals(String itemName,int value)...{


return addSQL(itemName+"!='"+String.valueOf(value)+"' ","and");


}




public boolean addAndNotEqualsItem(String itemName,String value)...{


return addSQL(itemName+"!="+String.valueOf(value)+" ","and");


}






/** *//**


* 添加Like


* @param itemName


* @param value


* @return


*/




public boolean addAndLike(String itemName,String likeStr)...{


return addSQL(itemName+" like '"+likeStr+"' ","and");


}






/** *//**


* 添加数字比较


* @param itemName


* @param operator


* @param value


* @return


*/




private boolean addAndNumberJudge(String itemName,String operator,Object value)...{


return addSQL(itemName+" "+operator+" "+String.valueOf(value)+" ","and");


}






/** *//**


* 添加数字小于条件


* @param itemName


* @param value


* @return


*/




public boolean addAndSmallThan(String itemName,int value)...{


return addAndNumberJudge(itemName,"<",String.valueOf(value));


}




public boolean addSmallThan(String itemName,double value)...{


return addAndNumberJudge(itemName,"<",String.valueOf(value));


}




public boolean addSmallThan(String itemName,float value)...{


return addAndNumberJudge(itemName,"<",String.valueOf(value));


}






/** *//**


* 添加数字大于条件


* @param itemName


* @param value


* @return


*/




public boolean addAndLardgeThan(String itemName,int value)...{


return addAndNumberJudge(itemName,">",String.valueOf(value));


}




public boolean addAndLardgeThan(String itemName,double value)...{


return addAndNumberJudge(itemName,">",String.valueOf(value));


}




public boolean addAndLardgeThan(String itemName,float value)...{


return addAndNumberJudge(itemName,">",String.valueOf(value));


}






/** *//**


* 添加数字小于等于条件


* @param itemName


* @param value


* @return


*/




public boolean addAndSmallAndEquals(String itemName,int value)...{


return addAndNumberJudge(itemName,"<=",String.valueOf(value));


}




public boolean addAndSmallAndEquals(String itemName,double value)...{


return addAndNumberJudge(itemName,"<=",String.valueOf(value));


}




public boolean addAndSmallAndEquals(String itemName,float value)...{


return addAndNumberJudge(itemName,"<=",String.valueOf(value));


}






/** *//**


* 添加数字大于等于条件


* @param itemName


* @param value


* @return


*/




public boolean addAndLardgeAndEquals(String itemName,int value)...{


return addAndNumberJudge(itemName,">=",String.valueOf(value));


}




public boolean addAndLardgeAndEquals(String itemName,double value)...{


return addAndNumberJudge(itemName,">=",String.valueOf(value));


}




public boolean addAndLardgeAndEquals(String itemName,float value)...{


return addAndNumberJudge(itemName,">=",String.valueOf(value));


}






/** *//**


* 添加其他比较


* @param itemName


* @param operator


* @param value


* @return


*/




private boolean addAndJudge(String itemName,String operator,Object value)...{


return addSQL(itemName+" "+operator+" '"+String.valueOf(value)+"' ","and");


}






public boolean addAndSmallThan(String itemName,Object value)...{


return addAndJudge(itemName,"<",value);


}




public boolean addAndLardgeThan(String itemName,Object value)...{


return addAndJudge(itemName,">",value);


}




public boolean addAndSmallAndEquals(String itemName,Object value)...{


return addAndJudge(itemName,"<=",value);


}




public boolean addAndLardgeAndEquals(String itemName,Object value)...{


return addAndJudge(itemName,">=",value);


}






/** *//**


* 数据库中字段与字段进行比较


* @param itemName


* @param item


* @return


*/




private boolean addAndItemJudge(String itemName,String operator,String item)...{


return addSQL(itemName+" "+operator+" "+item+" ","and");


}






public boolean addAndSmallThanItem(String itemName,String item)...{


return addAndItemJudge(itemName,"<",item);


}




public boolean addAndLardgeThanItem(String itemName,String item)...{


return addAndItemJudge(itemName,">",item);


}




public boolean addAndSmallAndEqualsItem(String itemName,String item)...{


return addAndItemJudge(itemName,"<=",item);


}




public boolean addAndLardgeAndEqualsItem(String itemName,String item)...{


return addAndItemJudge(itemName,">=",item);


}






/** *//**


* 添加in条件


* @param itemName


* @param list


* @return


*/




public boolean addAndInList(String itemName,List list)...{




try...{




if(condition.length()>0)...{


condition.append("and ");


}


condition.append(itemName+" in ");




condition.append("(");


for(Iterator iter=list.iterator();iter.hasNext();)




...{


condition.append("'"+iter.next().toString()+"'");




if(iter.hasNext())...{condition.append(",");}


}


condition.append(")");




condition.append(" ");


countTopLvCondition++;


countAllCondition++;


return true;




}catch(Exception e)...{


System.out.println("Conditions addInList Error!---alzq.baseClass.Conditions:");


return false;


}


}






/** *//**


* 添加is null条件


* @param itemName


* @return


*/


public boolean addAndIsNull(String itemName)




...{


return addSQL(itemName+" is null ","and");


}






/** *//**


* 添加is not null条件


* @param itemName


* @return


*/


public boolean addAndIsNotNull(String itemName)




...{


return addSQL(itemName+" is not null ","and");


}






/** *//**


* 添加条件嵌套


* @param con


* @return


*/




public boolean addAndCondition(Conditions con)...{




try...{




if(condition.length()>0)...{


condition.append("and ");


}


condition.append("( ");


condition.append(con.getCondition());


condition.append(") ");


countTopLvCondition++;


countAllCondition+=con.getCountAllCondition();


return true;




}catch(Exception e)...{


System.out.println("Conditions addCondition Error!---alzq.baseClass.Conditions:");


return false;


}


}










/** *//**


* 添加相等条件-or


* @param itemName


* @param value


* @return


*/




public boolean addOrEquals(String itemName,Object value)...{


return addSQL(itemName+"='"+String.valueOf(value)+"' ","or");


}




public boolean addOrEquals(String itemName,int value)...{


return addSQL(itemName+"='"+String.valueOf(value)+"' ","or");


}




public boolean addOrEqualsItem(String itemName,String value)...{


return addSQL(itemName+"="+String.valueOf(value)+" ","or");


}






/** *//**


* 添加不相等条件-or


* @param itemName


* @param value


* @return


*/




public boolean addOrNotEquals(String itemName,Object value)...{


return addSQL(itemName+"!='"+String.valueOf(value)+"' ","or");


}




public boolean addOrNotEquals(String itemName,int value)...{


return addSQL(itemName+"!='"+String.valueOf(value)+"' ","or");


}




public boolean addOrNotEqualsItem(String itemName,String value)...{


return addSQL(itemName+"!="+String.valueOf(value)+" ","or");


}






/** *//**


* 添加Like--or


* @param itemName


* @param value


* @return


*/




public boolean addOrLike(String itemName,String likeStr)...{


return addSQL(itemName+" like '"+likeStr+"' ","or");


}






/** *//**


* 添加数字比较--or


* @param itemName


* @param operator


* @param value


* @return


*/




private boolean addOrNumberJudge(String itemName,String operator,Object value)...{


return addSQL(itemName+" "+operator+" "+String.valueOf(value)+" ","or");


}






/** *//**


* 添加数字小于条件--or


* @param itemName


* @param value


* @return


*/




public boolean addOrSmallThan(String itemName,int value)...{


return addOrNumberJudge(itemName,"<",String.valueOf(value));


}




public boolean addOrSmallThan(String itemName,double value)...{


return addOrNumberJudge(itemName,"<",String.valueOf(value));


}




public boolean addOrSmallThan(String itemName,float value)...{


return addOrNumberJudge(itemName,"<",String.valueOf(value));


}






/** *//**


* 添加数字大于条件--or


* @param itemName


* @param value


* @return


*/




public boolean addOrLardgeThan(String itemName,int value)...{


return addOrNumberJudge(itemName,">",String.valueOf(value));


}




public boolean addOrLardgeThan(String itemName,double value)...{


return addOrNumberJudge(itemName,">",String.valueOf(value));


}




public boolean addOrLardgeThan(String itemName,float value)...{


return addOrNumberJudge(itemName,">",String.valueOf(value));


}






/** *//**


* 添加数字小于等于条件--or


* @param itemName


* @param value


* @return


*/




public boolean addOrSmallAndEquals(String itemName,int value)...{


return addOrNumberJudge(itemName,"<=",String.valueOf(value));


}




public boolean addOrSmallAndEquals(String itemName,double value)...{


return addOrNumberJudge(itemName,"<=",String.valueOf(value));


}




public boolean addOrSmallAndEquals(String itemName,float value)...{


return addOrNumberJudge(itemName,"<=",String.valueOf(value));


}






/** *//**


* 添加数字大于等于条件--or


* @param itemName


* @param value


* @return


*/




public boolean addOrLardgeAndEquals(String itemName,int value)...{


return addOrNumberJudge(itemName,">=",String.valueOf(value));


}




public boolean addOrLardgeAndEquals(String itemName,double value)...{


return addOrNumberJudge(itemName,">=",String.valueOf(value));


}




public boolean addOrLardgeAndEquals(String itemName,float value)...{


return addOrNumberJudge(itemName,">=",String.valueOf(value));


}






/** *//**


* 添加其他比较--or


* @param itemName


* @param operator


* @param value


* @return


*/




private boolean addOrJudge(String itemName,String operator,Object value)...{


return addSQL(itemName+" "+operator+" '"+String.valueOf(value)+"' ","or");


}






public boolean addOrSmallThan(String itemName,Object value)...{


return addOrJudge(itemName,"<",value);


}




public boolean addOrLardgeThan(String itemName,Object value)...{


return addOrJudge(itemName,">",value);


}




public boolean addOrSmallAndEquals(String itemName,Object value)...{


return addOrJudge(itemName,"<=",value);


}




public boolean addOrLardgeAndEquals(String itemName,Object value)...{


return addOrJudge(itemName,">=",value);


}






/** *//**


* 数据库中字段与字段比较--or


* @param itemName


* @param operator


* @param item


* @return


*/




private boolean addOrItemJudge(String itemName,String operator,String item)...{


return addSQL(itemName+" "+operator+" "+item+" ","or");


}






public boolean addOrSmallThanItem(String itemName,String item)...{


return addOrItemJudge(itemName,"<",item);


}




public boolean addOrLardgeThanItem(String itemName,String item)...{


return addOrItemJudge(itemName,">",item);


}




public boolean addOrSmallAndEqualsItem(String itemName,String item)...{


return addOrItemJudge(itemName,"<=",item);


}




public boolean addOrLardgeAndEqualsItem(String itemName,String item)...{


return addOrItemJudge(itemName,">=",item);


}






/** *//**


* 添加in条件--or


* @param itemName


* @param list


* @return


*/




public boolean addOrInList(String itemName,List list)...{




try...{




if(condition.length()>0)...{


condition.append("or ");


}


condition.append(itemName+" in ");




condition.append("(");


for(Iterator iter=list.iterator();iter.hasNext();)




...{


condition.append("'"+iter.next().toString()+"'");




if(iter.hasNext())...{condition.append(",");}


}


condition.append(")");




condition.append(" ");


countTopLvCondition++;


countAllCondition++;


return true;




}catch(Exception e)...{


System.out.println("Conditions addOrInList Error!---alzq.baseClass.Conditions:");


return false;


}


}






/** *//**


* 添加is null条件


* @param itemName


* @return


*/


public boolean addOrIsNull(String itemName)




...{


return addSQL(itemName+" is null ","or");


}






/** *//**


* 添加is not null条件


* @param itemName


* @return


*/


public boolean addOrIsNotNull(String itemName)




...{


return addSQL(itemName+" is not null ","or");


}






/** *//**


* 添加条件嵌套--or


* @param con


* @return


*/




public boolean addOrCondition(Conditions con)...{




try...{




if(condition.length()>0)...{


condition.append("or ");


}


condition.append("( ");


condition.append(con.getCondition());


condition.append(") ");


countTopLvCondition++;


countAllCondition+=con.getCountAllCondition();


return true;




}catch(Exception e)...{


System.out.println("Conditions addOrCondition Error!---alzq.baseClass.Conditions:");


return false;


}


}






public String getOrderItemsName() ...{


return orderItemsName;


}






public void setOrderItemsName(String orderItemsName) ...{


this.orderItemsName = orderItemsName;


}






public String getOrderType() ...{


return orderType;


}






public void setOrderType(String orderType) ...{


if(orderType.toLowerCase().equals("asc") || orderType.toLowerCase().equals("desc"))




...{


this.orderType = orderType;


}


}






public String getGroupItemsName() ...{


return groupItemsName;


}






public void setGroupItemsName(String groupItemsName) ...{


this.groupItemsName = groupItemsName;


}


}



对应的查询的基本VO类如下:




package com.sihitech.biplatform.common;




import java.sql.ResultSet;


import java.util.List;






/** *//**


* 基本VO类,使用于JDBC访问数据库时的基本VO类


*


* 主要实现了方法getFromResultSet


* 在PUBLICDAO中需要根据该方法实现冲JDBC中返回LIST


*


* 作者:alzq


*


*/




public class BaseVO...{


protected String tableName; //用于选取VO数据的表名集合


protected String itemsName; //用于选取VO数据的数据项字符串




/** *//**


* 以上2项主要是提供给JDBC调用后可以返回正确的值,这样不需要用户去重复编写


*/






/** *//**


* 本方法从ResultSet中提取相关信息,并添加到List中<br>


* 主要用于JDBC的访问,一般根据自行设定好的顺序进行数据提取<br>


* 也可以使用字段名,不过字段名消耗较多资源<br>


* 需要在子类别中重定义<br>


* @param rs


*/


public void getFromResultSet(ResultSet rs,List list) throws Exception




...{


return;


}




public String getItemsName() ...{


return "";


}




public String getTableName() ...{


return "";


}


}



以下是一个VO的例子:


package com.sihitech.recordProduct.check.vo;




import java.sql.ResultSet;


import java.util.List;




import com.sihitech.biplatform.common.BaseVO;




public class ProductListVO extends BaseVO ...{


private String ywlx; //业务类型


private String productId; //产品ID


private String productName; //产品名称


private int loadData; //处理方式


private String productDw; //产品单位






public String getProductDw() ...{


return productDw;


}




public void setProductDw(String productDw) ...{


this.productDw = productDw;


}


public void getFromResultSet(ResultSet rs,List list) throws Exception




...{


ProductListVO vo=new ProductListVO();




vo.setYwlx(rs.getString(1));


vo.setProductId(rs.getString(2));


vo.setProductName(rs.getString(3));


vo.setLoadData(rs.getInt(4));


vo.setProductDw(rs.getString(5));




list.add(vo);


}




public String getItemsName() ...{


return "ywlx,pro_id,pro_name,loaddata,pro_dw";


}




public String getTableName() ...{


return "bx_info2";


}




public String getProductId() ...{


return productId;


}




public void setProductId(String productId) ...{


this.productId = productId;


}




public String getProductName() ...{


return productName;


}




public void setProductName(String productName) ...{


this.productName = productName;


}




public String getYwlx() ...{


return ywlx;


}




public void setYwlx(String ywlx) ...{


this.ywlx = ywlx;


}




public int getLoadData() ...{


return loadData;


}




public void setLoadData(int loadData) ...{


this.loadData = loadData;


}




}

再下来是查询,修改,删除的函数(其中有用到JDBC连接的类,这个具体就不写了,外面很多的):








/** *//**


* 获取条件下FIRSTLINE到ENDLINE的数据列表


* 当endline为-1时为到底


* @param condition


* @param firstLine


* @param endLine


* @return


* @throws Exception


*/


public List getListByCondition(Conditions condition,int firstLine,int endLine,BaseVO vo) throws Exception




...{


List res=new ArrayList();


Connection con=null;


Statement stmt=null;


ResultSet rs=null;


try




...{


DBHelper db=new DBHelper();


con=db.getDBConnection();


stmt=con.createStatement();




String SQL=condition.getSQL();


System.out.println("get list of user by condition:"+SQL);


rs=stmt.executeQuery(SQL);


for(int n=0;n<firstLine;n++)




...{


rs.next();


}


if(endLine==-1)




...{


while(rs.next())




...{


vo.getFromResultSet(rs,res);


}


}


else




...{


while(rs.next() && rs.getRow()<=endLine)




...{


vo.getFromResultSet(rs,res);


}


}


}


catch(Exception ex)




...{


ex.printStackTrace();


}


finally




...{


try




...{


rs.close();


}




catch(Exception e)...{}


try




...{


stmt.close();


}




catch(Exception e)...{}


try




...{


con.close();


}




catch(Exception e)...{}


}


return res;


}






/** *//**


* 根据Condition进行UPDATE


* 当endline为-1时为到底


* @param condition


* @param firstLine


* @param endLine


* @return


* @throws Exception


*/


public void updateByCondition(Conditions condition,String updateString) throws Exception




...{


Connection con=null;


Statement stmt=null;


try




...{


DBHelper db=new DBHelper();


con=db.getDBConnection();


stmt=con.createStatement();




String SQL="update "+condition.getTablesName()+" set "+updateString;


String conditionString=condition.getCondition();


if(conditionString.trim().length()>0)




...{


SQL+=" where "+condition.getCondition();


}


SQL+=";";


System.out.println("update by condition:"+SQL);


stmt.execute(SQL);


}


catch(Exception ex)




...{


ex.printStackTrace();


}


finally




...{


try




...{


stmt.close();


}




catch(Exception e)...{}


try




...{


con.close();


}




catch(Exception e)...{}


}


}






/** *//**


* 根据Condition进行delete


* 当endline为-1时为到底


* @param condition


* @param firstLine


* @param endLine


* @return


* @throws Exception


*/


public void delByCondition(Conditions condition) throws Exception




...{


List res=new ArrayList();


Connection con=null;


Statement stmt=null;


try




...{


DBHelper db=new DBHelper();


con=db.getDBConnection();


stmt=con.createStatement();




String SQL="delete "+condition.getTablesName()+" where "+condition.getCondition()+";";


System.out.println("delete by condition:"+SQL);


stmt.execute(SQL);


}


catch(Exception ex)




...{


ex.printStackTrace();


}


finally




...{


try




...{


stmt.close();


}




catch(Exception e)...{}


try




...{


con.close();


}




catch(Exception e)...{}


}


}

最后来个调用查询的小例子(条件如何生成什么的就没了,只是调用部分的那几句就好了):




ProductListVO vo=new ProductListVO();


Conditions con=new Conditions();


con.setTablesName(vo.getTableName());


con.setItemsName(vo.getItemsName());




//publicdao是放有查询函数的类


return publicdao.getListByCondition(con,0,-1,vo);

如上就是俺个人暂时使用的一个小SQL类了^ ^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息