Mysql 通過中文查詢數據查不出結果問題

與數據爲字符編碼有關。若編碼設置得不當,就會出現查不出結果。

 

 

   

   


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&amp;characterEncoding=utf8"

 

  這樣就可以查到數據了。

發佈了58 篇原創文章 · 獲贊 0 · 訪問量 3602
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章