Java怎么把类型写成T后取得它的真实类型。比如public List<T> find() {}或public T find() {}
publicList<User>find(){List<User>list=null;Stringsql="select*fromuserswhereid<?";try{...
public List<User> find() {
List<User> list=null;
String sql = "select * from users where id<?";
try {
QueryRunner qr = new QueryRunner();
list = qr.query(conn, sql, new BeanListHandler<User>(User.class), new Object[]{"10"});
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
这个方法的List的类型是user,所以每次只能用User的bean。这个方法要怎么改,改了之后就是随便传什么类型都可以用。谢谢
public <T>T findSimpleRefResult(String sql, List<Object> params, Class<T> cls) throws Exception {
T resultObject = null;
pt = con.prepareStatement(sql);
if(params != null && !params.isEmpty()) {
for(int i = 0; i < params.size(); i++) {
pt.setObject(i + 1, params.get(i));
}
}
rs = pt.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
int cols_len = metaData.getColumnCount();
while(rs.next()) {
代码太多了...
}
return resultObject;
}
我找到方法了,就是上面的这个。不过不知道要怎么调用 展开
List<User> list=null;
String sql = "select * from users where id<?";
try {
QueryRunner qr = new QueryRunner();
list = qr.query(conn, sql, new BeanListHandler<User>(User.class), new Object[]{"10"});
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
这个方法的List的类型是user,所以每次只能用User的bean。这个方法要怎么改,改了之后就是随便传什么类型都可以用。谢谢
public <T>T findSimpleRefResult(String sql, List<Object> params, Class<T> cls) throws Exception {
T resultObject = null;
pt = con.prepareStatement(sql);
if(params != null && !params.isEmpty()) {
for(int i = 0; i < params.size(); i++) {
pt.setObject(i + 1, params.get(i));
}
}
rs = pt.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
int cols_len = metaData.getColumnCount();
while(rs.next()) {
代码太多了...
}
return resultObject;
}
我找到方法了,就是上面的这个。不过不知道要怎么调用 展开
3个回答
展开全部
这个地方泛型是不支持的,因为List传的数据是从数据库中查找的,是确定的类型,sql语句不支持select * from <T> where id<?类似泛型的功能,所以只能分别取查询
追问
我找到方法了,就是上面的这个。不过不知道要怎么调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从楼上的回答和你的提问总结出这事不可能的,除非你硬反射(很耗时)。可行的办法是让你所有的Bean都实现某一个接口(POJO,接口名你自己定)这样你的方法就是
public List<POJO> find(String atble) {//table是表的名字
........
return list;
}
public List<POJO> find(String atble) {//table是表的名字
........
return list;
}
更多追问追答
追问
我找到方法了,就是上面的这个。不过不知道要怎么调用
追答
直接调用就OK啊 第一个参数是你的sql(sql里面会有N多?)第二个list是对应sql里面的?的参数
第三个是一个class 是你bean的class 你直接getclass就能得到 这样就OK了啊
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用反射
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询