今天的項(xiàng)目中在用Hibernate3.0進(jìn)行模糊查詢的時(shí)候,出現(xiàn)中文亂碼,在網(wǎng)上查了好久資料,終于解決了,現(xiàn)在把整理后的貼出來。
Hibernate中實(shí)現(xiàn)模糊查詢,可有以下三種方式:
第一種方式:QBC查詢
String name = "", info = "";
if (sub != null && sub.getSubname() != null) {
name = sub.getSubname();
}
if (sub != null && sub.getSubinfo() != null) {
info = sub.getSubinfo();
}
Criteria cr = session.createCriteria(Subject.class);
cr.add(Expression.like("subname","%"+name+"%"));
cr.add(Expression.like("subinfo","%"+info+"%"));
第二種方式:HQL查詢語句
String hql = "from Subject as s where s.subname like :name and s.subinfo like :info";
// 調(diào)用session的獲得數(shù)據(jù)列表方法,傳遞HQL查詢語句
String subnamevalue="要查詢的中文值";
String sql="";
sql = "from Pfapp where name like :subname ";
Query query = session.createQuery(sql);
query.setString("subname","%"+subnamevalue+"%");
System.out.println("*********"+sql);
注:Subject為數(shù)據(jù)庫表subject映射的類;它有相應(yīng)的屬性subname、subinfo及相應(yīng)的get和set方法;sub為Subject的一個(gè)實(shí)例化對(duì)象。
另外說明的是:如果你不寫對(duì)象名稱,直接寫字段,那么hibernate就按照數(shù)據(jù)庫字段進(jìn)行查找
如果你寫 (對(duì)象名.對(duì)象屬性),那么hibernate就按照ormapping中的映射字段進(jìn)行查找
這是hibernate的靈活之處!!