反射实现泛型多条件查询
时间: 2024-02-01 13:02:56 浏览: 71
反射可以实现泛型多条件查询,具体步骤如下:
1. 定义一个查询方法,接收一个条件对象和一个 Class 类型参数,通过反射获取该类型的所有属性。
2. 遍历所有属性,如果该属性有值,则构造一个查询条件,并添加到查询条件列表中。
3. 使用查询条件列表构造一个 Criteria 对象,然后使用该 Criteria 对象进行查询。
以下是示例代码:
```java
public class QueryUtil<T> {
public List<T> query(T condition, Class<T> clazz) throws Exception {
List<Criterion> criteria = new ArrayList<>();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(condition);
if (value != null) {
criteria.add(Restrictions.eq(field.getName(), value));
}
}
Criteria criteriaQuery = getSession().createCriteria(clazz);
for (Criterion criterion : criteria) {
criteriaQuery.add(criterion);
}
return criteriaQuery.list();
}
}
```
使用该查询方法时,只需传入条件对象和实体类类型即可:
```java
QueryUtil<User> queryUtil = new QueryUtil<>();
User condition = new User();
condition.setUsername("张三");
condition.setAge(20);
List<User> users = queryUtil.query(condition, User.class);
```
阅读全文