
java 函数的参数含有Class,该怎么调用?
方法如下://查publicListexecuteQuery(Stringsql,Object[]params,Classcla){Listlist=newArrayLi...
方法如下:
//查
public List executeQuery(String sql,Object[] params,Class cla){
List list = new ArrayList<Object>();
try {
ps = this.getConn().prepareStatement(sql);
if(params != null && params.length != 0){
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
}
rs = ps.executeQuery();//执行SQL语句,并返回结果集
//利用结果集对象获得ResultSetMetadata对象,ResultSetMetadata是结果集的源数据,在ResultSetMetadata中存放着查询结果的结果集的表结构
ResultSetMetaData rsmt = rs.getMetaData();
while(rs.next()){
Object obj = cla.newInstance();
//获得查询结果的列数
int columnCount = rsmt.getColumnCount();
//根据列数确定循环次数
for(int i=0;i<columnCount;i++){
//获得属性名
String fieldName = rsmt.getColumnName(i+1);
//获得属性
Field field = cla.getDeclaredField(fieldName);
//拼接方法名
String methodName = "set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
//获得方法
Method method = cla.getDeclaredMethod(methodName, field.getType());
method.invoke(obj,rs.getObject(i+1));//调用对象的set方法赋值
}
list.add(obj);
}
}
catch (Exception e) {
e.printStackTrace();
}
return list;
}
能否举个简单的例子来调用一下该方法呢?谢谢~
Done!
Class cla = null;
try {
cla = Class.forName(classname);//classname=packagename+classname
} catch (Exception e) {
e.printStackTrace();
}
List <Object> objects = dbHelper.executeQuery("select * from Table where column = ?", new Object[]{"condition"}, cla); 展开
//查
public List executeQuery(String sql,Object[] params,Class cla){
List list = new ArrayList<Object>();
try {
ps = this.getConn().prepareStatement(sql);
if(params != null && params.length != 0){
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
}
rs = ps.executeQuery();//执行SQL语句,并返回结果集
//利用结果集对象获得ResultSetMetadata对象,ResultSetMetadata是结果集的源数据,在ResultSetMetadata中存放着查询结果的结果集的表结构
ResultSetMetaData rsmt = rs.getMetaData();
while(rs.next()){
Object obj = cla.newInstance();
//获得查询结果的列数
int columnCount = rsmt.getColumnCount();
//根据列数确定循环次数
for(int i=0;i<columnCount;i++){
//获得属性名
String fieldName = rsmt.getColumnName(i+1);
//获得属性
Field field = cla.getDeclaredField(fieldName);
//拼接方法名
String methodName = "set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
//获得方法
Method method = cla.getDeclaredMethod(methodName, field.getType());
method.invoke(obj,rs.getObject(i+1));//调用对象的set方法赋值
}
list.add(obj);
}
}
catch (Exception e) {
e.printStackTrace();
}
return list;
}
能否举个简单的例子来调用一下该方法呢?谢谢~
Done!
Class cla = null;
try {
cla = Class.forName(classname);//classname=packagename+classname
} catch (Exception e) {
e.printStackTrace();
}
List <Object> objects = dbHelper.executeQuery("select * from Table where column = ?", new Object[]{"condition"}, cla); 展开
展开全部
//List executeQuery(String sql,Object[] params,Class cla)
List list = new List<Table>();
list = ooo.executeQuery("select * from sysobjects where type = ?",new Object[]{"u"},Table.class);
更多追问追答
追问
List persons = new ArrayList();
persons = dbHelper.executeQuery("select * from Person where password=?", new String[]{"123"}, Person.class);
字数太多,在评论那里,麻烦您看看
追答
嗯,差不多是这个意思了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询