关于JAVA实现list作为查询参数的进行查询的几种实现思路
1、如果所要查询的表数据较少且可控,可以将全部数据取出来然后再与自己的条件进行比较。代码如下:
public List queryByList(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
//定义最终要返回的结果集
List<HashMap> list = new ArrayList<HashMap>();
try {
// 加载Oracle JDBC驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
// 建立数据库连接
String url = "jdbc:oracle:thin:@数据库ip:端口:服务名";
String user = "数据库用户名";
String password = "数据库密码";
conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
stmt = conn.createStatement();
// 创建ResultSet对象
rs = stmt.executeQuery("SELECT * FROM your_table");
// 处理查询结果
while (rs.next()) {
//过滤条件
int id = rs.getInt("id");
if(id != 999){
continue;
}
HashMap tempMap = new HashMap();
tempMap.put("age",rs.getInt("age"));
tempMap.put("name",rs.getString("name"));
list.add(tempMap);
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
2、使用String.join方法拼接字符串进行查询,代码如下:(代码是摘抄出来的需要自行调试)
public static void queryByList(List ids) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 加载Oracle JDBC驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
// 建立数据库连接
String url = "jdbc:oracle:thin:@localhost:1521:服务名";
String user = "数据库用户";
String password = "数据库密码";
conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
stmt = conn.createStatement();
//sql拼接
String sql = "select * from 表名 where id in (" + String.join(",",ids) +")"
// 创建ResultSet对象
rs = stmt.executeQuery("SELECT * FROM your_table");
// 处理查询结果
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3、想到再写