2020-10-14 20:00发布
/**
* 通用查询:
* 实现对任意表的任意查询
* @param 形参泛型:
* 声明了一个泛型,相当于方法的形参,方法调用时传入实参泛型,相当于一个占位符
* @param cls 类对象
* @param sql
* @param params:Sql占位符的值
* @return 多行/单行数据都可以封装到一个List中
*/
public static List generalQuery(Class cls,
String sql,Object... params){
List list = new ArrayList<>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
pstmt = conn.prepareStatement(sql);
//给占位符赋值
// params的长度为多少:表示就有几个?
for (int i = 0; i < params>
// 注意占位符的下标从1开头
pstmt.setObject(i+1, params[i]);
}
rs = pstmt.executeQuery();
while (rs.next()) {
// 数据库的一行记录对应一个Java对象
X x = cls.newInstance();
// 从ResultSet中取出的数据封装到x对象中 :
// 使用反射给x对象的属性赋值
// 获取属性名:列名和属性名相同
// 获取列名:通过ResultSetMetaData(封装了列的所有信息)
ResultSetMetaData md = rs.getMetaData();
// 获取列总数
int columnCount = md.getColumnCount();
// 有多少列就给多少属性赋值:一个列对应一个属性
// columnNo:列名
for (int columnNo = 1; columnNo <= columnCount; columnNo++) {
// 通过列号获取列名
String columnName = md.getColumnName(columnNo);
// 使用反射给属性赋值
Field field = cls.getDeclaredField(columnName);
field.setAccessible(true);
field.set(x, rs.getObject(columnName));
//最终把取出的一行添加到List中
list.add(x);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return list;
最多设置5个标签!
/**
* 通用查询:
* 实现对任意表的任意查询
* @param 形参泛型:
* 声明了一个泛型,相当于方法的形参,方法调用时传入实参泛型,相当于一个占位符
* @param cls 类对象
* @param sql
* @param params:Sql占位符的值
* @return 多行/单行数据都可以封装到一个List中
*/
public static List generalQuery(Class cls,
String sql,Object... params){
List list = new ArrayList<>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
pstmt = conn.prepareStatement(sql);
//给占位符赋值
// params的长度为多少:表示就有几个?
for (int i = 0; i < params>
// 注意占位符的下标从1开头
pstmt.setObject(i+1, params[i]);
}
rs = pstmt.executeQuery();
while (rs.next()) {
// 数据库的一行记录对应一个Java对象
X x = cls.newInstance();
// 从ResultSet中取出的数据封装到x对象中 :
// 使用反射给x对象的属性赋值
// 获取属性名:列名和属性名相同
// 获取列名:通过ResultSetMetaData(封装了列的所有信息)
ResultSetMetaData md = rs.getMetaData();
// 获取列总数
int columnCount = md.getColumnCount();
// 有多少列就给多少属性赋值:一个列对应一个属性
// columnNo:列名
for (int columnNo = 1; columnNo <= columnCount; columnNo++) {
// 通过列号获取列名
String columnName = md.getColumnName(columnNo);
// 使用反射给属性赋值
Field field = cls.getDeclaredField(columnName);
field.setAccessible(true);
field.set(x, rs.getObject(columnName));
}
//最终把取出的一行添加到List中
list.add(x);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
一周热门 更多>