java不使用sql做模糊查询,在程序内部做模糊查询,使用sql查询出来一个list集合,在service做模糊查询,把满足条件的数据存储到另一个集合里,返回给前端
时间: 2023-11-11 21:03:18 浏览: 137
在Java中,可以使用字符串的一些方法来实现模糊查询,比如使用contains()方法判断一个字符串是否包含另一个字符串。以下是一个示例代码:
```java
List<String> originalList = new ArrayList<>(); // 原始数据集合
List<String> filteredList = new ArrayList<>(); // 模糊查询后的数据集合
// 假设查询关键字为 "abc"
for (String data : originalList) {
if (data.contains("abc")) {
filteredList.add(data);
}
}
// 返回模糊查询的结果
return filteredList;
```
但是,使用这种方式来实现模糊查询的效率可能不够高,尤其是当数据量较大时。因此,通常还是会使用SQL语句来进行模糊查询。在Java中,可以使用JDBC、MyBatis等库来执行SQL查询,并将查询结果封装成Java对象或集合返回给前端。以下是一个示例代码:
```java
public List<User> fuzzyQueryUsers(String keyword) throws SQLException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
List<User> userList = new ArrayList<>();
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false", "root", "password");
String sql = "SELECT * FROM user WHERE name LIKE ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, "%" + keyword + "%");
rs = stmt.executeQuery();
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
userList.add(user);
}
} finally {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
return userList;
}
```
在这个示例代码中,使用了JDBC库来连接MySQL数据库,并执行了一个带有参数的模糊查询SQL语句。使用PreparedStatement可以避免SQL注入的问题。最后,将查询结果封装成User对象,并添加到集合中返回给前端。
阅读全文