public List<T> findLikeByEntity(T entity,String[] propertyNames)
{
Criteria criteria = this.createCriteria();
for (String property:propertyNames)
{
try {
Object value = PropertyUtils.getProperty(entity,property);
if (value instanceof String)
{
criteria.add(Restrictions.like(property,(String) value,
MatchMode.ANYWHERE));
criteria.addOrder(Order.asc(property));
}
} catch (Exception ex)
{
ex.printStackTrace();
}
}
return (List<T>) criteria.list();
}
上面是我从网上找出的通用dao 里面的泛型模糊查询的方法,当中我省略了else部分。其中用到了PropertyUtils,起初这里怎么也获取不到值,后来我的实体类里有属性:axis,shuju,shuju1当然都是string 类型的,然后我在action 理这样写的:
String [] propertyNames={"axis","shuju","shuju1"};这样才能传递过来。这当中的具体机制我也不太理解,但是看到网上有些它的语法:
- //通过PropertyUtils的getProperty方法获取指定属性的值
- Integer id = (Integer)PropertyUtils.getProperty(entity, "id");
- String name = (String)PropertyUtils.getProperty(entity, "name");
- System.out.println("id = " + id + " name = " + name);
- //调用PropertyUtils的setProperty方法设置entity的指定属性
- PropertyUtils.setProperty(entity, "name", "心梦帆影");
- System.out.println("name = " + entity.getName());
根据上面的情况,我才写出来了。必须把取得值是加上”“,而且和属性名相同。 有会的朋友欢迎给我留言交流。