與數據爲字符編碼有關。若編碼設置得不當,就會出現查不出結果。
如
package org.hbyx.bean;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
public class DButil {
private SessionFactory sf;
public SessionFactory getSf() {
return sf;
}
public void setSf(SessionFactory sf) {
this.sf = sf;
}
public List<?> getInfo(String hql) {
Session session = sf.openSession(); //創建會話
Query q = session.createQuery(hql); //執行查詢
List<?> list = q.list(); //得到結果列表
session.close();
return list; //將結果列表返回
}
@SuppressWarnings("unchecked")
public int getTotalPage(String tp, int span) { //用來得到總頁數
Session session = sf.openSession(); //創建會話
Query q = session.createQuery(tp); //執行查詢
List<Long> list = q.list(); //得到結果列表
int count = list.get(0).intValue(); //得到總記錄條數
int page = count % span == 0 ? (count / span) : (count / span + 1); //得到總頁數
session.close();
return page;
}
@SuppressWarnings("unchecked")
public List<?> getPageContent(String hql, int nowPage, int span) {//得到某頁的內容
List temp = new ArrayList(); //創建List,用來存放頁面內容
Session session = sf.openSession(); //創建會話
Query q = session.createQuery(hql); //執行查詢
List list = q.list(); //得到結果列表
int i = 0; //標誌位用來記錄條數
while((nowPage-1)*span+i< list.size() && i<span) {
temp.add(list.get((nowPage-1)*span + i)); //將結果添加到temp中
i++; //標誌位自加
}
session.close();
return temp; //將結果返回
}
public Object getObject(String tablename, String id) {
Session session = sf.openSession(); //創建會話
Object obj = null; //申明引用
if(tablename.equals("GoodsInfo")) { //當得到商品對象時
obj = session.get(GoodsInfo.class, id); //得到對象
} else if(tablename.equals("GoodsClassInfo")) { //當得到類別對象時
obj = session.get(GoodsClassInfo.class, id); //得到對象
}
return obj;
}
}
其中tp 和 hql爲
String tp = "select count(*) from GoodsInfo where gname like '%蘋果%';
String hql = "from GoodsInfo where gname like '%蘋果%';
執行getInfo(String hql) 和 getTotalPage(String tp, int span) getPageContent(String hql, int nowPage, int span)
List list = q.list();
list爲大小爲0的list.也就是說沒有查出任何符合條件的數據的結果。
這裏就是因爲數據庫的字符集設置問題(mysql數據庫存在這種問題)
可以在連接mysql數據庫時在連接字符串中進行設置如:
url="jdbc:mysql://localhost:3306/db_pos?useUnicode=true&characterEncoding=utf8"
這樣就可以查到數據了。