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类了^ ^
语言是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类了^ ^
相关文章推荐
- LINQ to SQL语句(13)之开放式并发控制和事务
- oracle PL/SQL的基本构成,结构控制语句,分支结构,选择结构,loop循环结构,
- PL/SQL知识总结(1):PL/SQL块结构和流程控制语句
- Oracle之PL/SQL编程_流程控制语句
- 控制sql语句查询出来的浮点类型数据小数点后的位数
- 第三章 PL/SQL流程控制语句
- SQL 流程控制语句 之五 return 语句介绍
- 8.PL_SQL――PL_SQL中的条件控制语句
- php模糊搜索(SQL语句查询的时候控制)
- LINQ体验(10)——LINQ to SQL语句之开放式并发控制和事务
- mybaties实现动态sql语句(加入流程控制)
- ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句
- 当实体类中存在只有0和1来控制状态的属性时,查询的时候SQL中的判断语句要注意
- PL/SQL流程控制语句说明
- Oracle PL/SQL语言基础_控制语句
- Oracle PL/SQL之LOOP循环控制语句
- Oracle PL/SQL之LOOP循环控制语句
- hibernate运行后的控制台中查看sql语句
- SQL流程控制语句
- Oracle PL/SQL之LOOP循环控制语句