@Override
public List<Book> getByInfo(String name, String author, String publisher) {
Session session=sessionFactory.getCurrentSession();
StringBuffer hql= new StringBuffer();
hql.append( "from Book b where 1=1 ");
if (name.length()!=0) {
hql.append( "and b.name like '%"+name+ "%'");
}
if (author.length()!=0)
hql.append("and b.author like '%" + author + "%'");
if (publisher.length()!=0)
hql.append("and b.publisher like '%"+publisher+"%'") ;
Query query=session.createQuery(hql.toString());
list=query.list();
return list;
}
% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。