我跟你当初的想法一样,自己做了一个sql生成工具,通过根据传入的参数 比如table 查询条件,查询列名等信息查询。。等一下我贴给你一部分,你参考一下,记得采纳哦
package javaUtil;
import java.lang.reflect.Field;
import java.util.ArrayList;
sql工具
public class SqlUtil {
//生成查询的sql语句,三个参数最后一个是通过下面那个工具方法生成的,前两个都是在action定义
public static String getSelectSql(String table,ArrayList
//查询表中全部的信息columns==null||"".equals(columns) condition==null||"".equals(condition)
String sql="select ";
if(columns.size()==0){
sql+="* from "+table;
//根据给的condition查询表全部信息
}else{
//依照条件查询
for(int i=0;i<(columns.size());i++){
if(i!=(columns.size()-1)){
sql+=columns.get(i)+",";
}else{
sql+=columns.get(i)+" from "+table;
}
}
}
if(condition.size()==0){
sql+=" ";
}else{
sql+=" where ";
for(int i=0;i<(condition.size());i++){
if(i!=(condition.size()-1)){
sql+=condition.get(i)+ " and ";
}else{
sql+=condition.get(i);
}
}
}
return sql;
}
//获取一个对象中,所有属性的属性名字和值
//通过这些值转化成ArrayList
public static ArrayList
// 获取f对象对应类中的所有属性域
Field[] fields = f.getClass().getDeclaredFields();
ArrayList
for(int i = 0 , len = fields.length; i < len; i++) {
// 对于每个属性,获取属性名
String varName = fields[i].getName();
try {
// 获取原来的访问控制权限
boolean accessFlag = fields[i].isAccessible();
// 修改访问控制权限
fields[i].setAccessible(true);
// 获取在对象f中属性fields[i]对应的对象中的变量
Object o = fields[i].get(f);
//把条件中的null抛掉
if(o==null||"".equals(o)){
System.out.println("这个值为空不输出");
}else{
//把一个条件转化成sql语言存到condition中
condition.add(i, varName + "=" + o);
}
// 恢复访问控制权限
fields[i].setAccessible(accessFlag);
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
}
}
return condition;
}
}
测试工具
package javaUtil;
import java.util.ArrayList;
public class TestSqlUtil {
/**
* 测试这个sql生成工具的main方法,模拟后台的action
* @param args
*/
public static void main(String[] args) {
//模拟,假设这两个数据时从页面接收到的
String id="1";
String name="2";
//建立工具的三个条件,如下是怎么设置的
String table="user";
ArrayList
ArrayList
//在action中定义查询那个列的数据
columns.add(0, "use");
columns.add(1, "id");
//在action中通过接受的数据设置条件查询的条件
//接受数据的类是自己建立,里面含有数据库全部表的列名
ConditionSqlUse condition =new ConditionSqlUse();
//设置传递数据的值。
condition.setId(id);
condition.setName(name);
//通过这个对象调用工具方法生成条件语句的list
a =SqlUtil.setAllComponentsName(condition);
//通过上面得出的几个条件生成sql语句
String sql=SqlUtil.getSelectSql(table, columns, a);
System.out.print(sql);
}
你自己研究一下,当初我也是研究了好久,这个代码是通过java来根据参数自动生成sql的工具
真没有人这样写的
一般是
增加、更新一个方法
删除一个
查询就可能是多个
我跟你当初的想法一样,自己做了一个sql生成工具,通过根据传入的参数 比如table 查询条件,查询列名等信息查询。。等一下我贴给你一部分,你参考一下,记得采纳哦