Java中,可以使用函数式编程的方式来查询数据库。以下是一个简单的例子:
假设有一个Student类,有id、name和age三个字段,现在需要查询年龄大于18岁的学生的姓名。
首先,定义一个函数式接口,用于查询:
@FunctionalInterface
public interface QueryFunction<T, R> {
R apply(T t);
}
其中,T代表查询参数的类型,R代表查询结果的类型。
然后,定义一个查询方法,该方法接收一个QueryFunction对象作为参数,并返回查询结果:
public List<String> query(QueryFunction<Integer, String> queryFunction) throws SQLException {
List<String> result = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
PreparedStatement stmt = conn.prepareStatement(SELECT_SQL)) {
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
// 使用QueryFunction对象进行查询
String queryResult = queryFunction.apply(age);
if (queryResult != null) {
result.add(queryResult);
}
}
}
return result;
}
在查询方法中,首先建立数据库连接,然后执行查询语句,遍历结果集,对每个学生的年龄调用QueryFunction对象进行查询,如果查询结果不为空,则将学生的姓名添加到结果列表中。
最后,可以使用Lambda表达式来调用查询方法:
List<String> names = query(age -> {
if (age > 18) {
return name;
} else {
return null;
}
});
在Lambda表达式中,根据年龄是否大于18来进行查询,如果年龄大于18,则返回学生的姓名,否则返回null。
以上就是使用函数式编程在Java中查询数据库的简单例子。