當前位置:首頁 » 編程語言 » hibernatesql查詢map

hibernatesql查詢map

發布時間: 2022-08-28 12:16:36

① hibernate 將結果封裝成map

兩種方式:

  1. 原生sql查詢

    以下代碼功能:Hibernate執行原生SQL返回List類型結果集

    //獲得session對象
    Session session = super.getSession();

    //創建sql語句
    String sql = "SELECT users.name,usersinfo.* FROM users,usersinfo WHERE users.id = usersinfo.userid";

    //獲得SQLQuery對象
    SQLQuery query = session.createSQLQuery(sql); //設定結果結果集中的每個對象為Map類型 query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP); //執行查詢
    List list = query.list();

  2. HQL查詢

    如果部分使用alias,部分不使用,則使用了alias的將使用alias作為key,沒有使用的則仍然使用序號代替,其中序號則為在查詢結果的序號
    String query = "select new Map(p.code as code, p.value) from Dictionary p";
    List list = session.createQuery(query).list();

說明:兩種方式最後返回的List 都是 Map<String, Object> 數據結構。

希望對你有幫助,如果滿意還望採納。謝謝 !

② 到底怎麼查看Hibernate生成SQL中的參數值

Hibernate在查詢出一行數據之後,內部實現還是將數據讀出到ResultSet里。
然後分析session.get(Class, Object)函數的Class參數,通過類反射可以知道該Class包含哪些對象並且newInstance一個該類的對象。
從ResultSet讀出屬性填充到該對象,用戶只需要對這個對象進行簡單的類型轉換就可以使用了。
例子如下:
static final ActiveRecord setupObject (Object object, ResultSet resultSet) throws java.sql.SQLException, ObjectAnalysisException
{
Map<Field, Accesstor> fields = ActiveRecord.analizeObjectFields(object);
try
{
for(Field field : fields.keySet())
{
Object value = resultSet.getObject(field.getName());
if(value != null)
fields.get(field).getSetter().invoke(object, value);
}
}
catch(SQLException err)
{
throw err;
}
catch(Exception err)
{
if(err instanceof IllegalAccessException || err instanceof IllegalArgumentException)
throw new ObjectAnalysisException(err.toString(), err);
else if(err instanceof InvocationTargetException)
throw new ObjectAnalysisException(err.toString(), err);
}
object.setId(resultSet.getLong("id"));
return object;
}

③ hibernate查詢問題

你用我的試一試,我用的是泛型類你寫一個自己的類實現這個類再傳入對應的bean就行:
public class CommonDaoImpl<T> implements ICommonDao<T> {

private Class entityClass = GenericSuperclass.getActualTypeClass(this.getClass());
public List<T> findCollectionByCondition(String condition,
final Object[] params, LinkedHashMap<String, String> orderby) {
String hql="from "+entityClass.getSimpleName()+" o where 1=1 ";
String orderHql=this.orderByHql(orderby);
final String finalHql = hql + condition + orderHql;
List<T> list=(List<T>) hibernateTemplate.execute(new HibernateCallback<T>() {
public T doInHibernate(Session session) throws HibernateException,
SQLException {
Query query=session.createQuery(finalHql);
for (int i = 0; params!=null&& i < params.length; i++) {
query.setParameter(i, params[i]);
}
return (T) query.list();
}
});
return list;
}
}
--------------------------------下面是一個調用的例子:
public List<Bookmsg> findall(Bookmsg book) {
String bookid=book.getBookid();
String bookname=book.getBookname();
List<Bookmsg> list =new ArrayList<Bookmsg>();
// 組織查詢條件
String condition = "";
List<String> paramsList = new ArrayList<String>();
if (StringUtils.isNotBlank(bookid)) {
bookid = bookid.trim();
condition += " and o.bookid = ?";
paramsList.add(bookid);
}
if (StringUtils.isNotBlank(bookname)) {
bookname = bookname.trim();
condition += " and o.bookname like ?";
paramsList.add("%["+bookname+"]%");
}
Object[] params = paramsList.toArray();
LinkedHashMap<String, String> orderby = new LinkedHashMap<String, String>();
orderby.put("bookid", "asc");
list = bmDao.findCollectionByCondition(condition, params, orderby);
return list;
}

④ hibernate怎麼獲取資料庫表欄位等信息

hibernate怎麼獲取資料庫表欄位等信息
教你個方法:
List result = session.createSQLQuery(sql)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list()
用這個方法可以把資料庫查詢出來的每一行封裝成一個Map類型,Key為資料庫欄位,Value為值,
然後把這些Map放到了一個List裡面,
如果你只返回一條記錄:
那麼
Map<String, Object> map = (Map<String, Object>) result.get(0);
即可得到你這一行記錄轉換層的Map,
如果有多條,迭代List即可。
希望對你有幫助

⑤ hibernate使用sql查詢

給你一個我寫的例子:
public List<Statistics> statistics(){
String sql="select "+
"sum(case when (t.type_code=3) then 1 else 0 end),"+
"sum(case when (t.type_code=5) then 1 else 0 end),"+
"sum(case when (t.type_code=8) then 1 else 0 end),"+
"sum(case when (t.type_code=0) then 1 else 0 end),"+
"sum(case when (t.type_code=6) then 1 else 0 end),"+
"sum(case when (t.type_code=9) then 1 else 0 end),"+
"count(*)"+
"from cs_cust_complaint_data t where t.from_flag='2'";
List<Statistics> stal = new ArrayList<Statistics>();
SQLQuery query = getSession().createSQLQuery(sql);
Object[] obj = (Object[])query.uniqueResult();
BigDecimal b0 = (BigDecimal)obj[0];
BigDecimal b1 = (BigDecimal)obj[1];
BigDecimal b2 = (BigDecimal)obj[2];
BigDecimal b3 = (BigDecimal)obj[3];
BigDecimal b4 = (BigDecimal)obj[4];
BigDecimal b5 = (BigDecimal)obj[5];
BigDecimal b6 = (BigDecimal)obj[6];
Double zs = b6.doubleValue();
DecimalFormat df=new DecimalFormat("#.00");
stal.add(new Statistics("卷煙營銷", b0.longValue(),Double.parseDouble(df.format(b0.doubleValue()/zs*100))));
stal.add(new Statistics("專賣法規", b1.longValue(),Double.parseDouble(df.format(b1.doubleValue()/zs*100))));
stal.add(new Statistics("煙葉生產", b2.longValue(),Double.parseDouble(df.format(b2.doubleValue()/zs*100))));
stal.add(new Statistics("政風行風", b3.longValue(),Double.parseDouble(df.format(b3.doubleValue()/zs*100))));
stal.add(new Statistics("人事勞資", b4.longValue(),Double.parseDouble(df.format(b4.doubleValue()/zs*100))));
stal.add(new Statistics("其他咨詢", b5.longValue(),Double.parseDouble(df.format(b5.doubleValue()/zs*100))));
return stal;
}

⑥ 請問我用hibernate的SQLQuery查詢資料庫里的一個欄位onlineDuration在某個時間段的總數

在某些場合下,我們可能想使用HIBERNATE的框架提供的SQL查詢介面,但是,由於實體沒有做映射,HIBERNATE不能把結果集轉換成你想要的List<POJO>,本文討論如何在這種情況下讓HIBERNATE直接返回你想的結果。下面是簡單的查詢封裝方法

Java代碼
public List<?> findObjectBySql(String queryString,Class<?> pojoClass){
//使用SQL構造查詢對象,此SQL是可以被JDBC接受的SQL,如SELECT * FROM XXX_TABLE
Query query = this.getSession().createSQLQuery(queryString);
//設置結果集轉換器,這是本文重點所在
query.setResultTransformer(new EscColumnToBean(pojoClass));
//返回查詢結果
return query.list();

⑦ hibernate 使用SQLquery 查詢List<map<String,Object>> 後 怎麼設置Object的數據類型啊

查詢List<map<String,Object>>
是什麼意思咧? 查詢結果不是是你自己裝配置的嗎?
原生的結果返回的話強轉成對應的類型就可以吧

⑧ 怎樣用hibernate的hql查詢查詢成map或list

最簡單的是給你個案例,下面是hql實現的分頁查詢,看看就明白的
/**
* 分頁查詢列表
*/
@SuppressWarnings("unchecked")
public List<T> queryForList(final String hqlStr, final Object[] paras,
final int pageNo, final int pageSize) throws CCException {
List<T> objList = new ArrayList<T>();
int count = 0;
Query query = this.getCurrentSession().createQuery(hqlStr);
if (null != paras && paras.length > 0) {
for (Object para : paras) {
query.setParameter(count++, para);
}
}
query.setFirstResult((pageNo - 1) * pageSize);
query.setMaxResults(pageSize);
objList = query.list();
return objList;
}

熱點內容
安卓手機的雲備份在哪裡能找到 發布:2025-01-17 00:14:12 瀏覽:471
詐騙的腳本 發布:2025-01-16 23:51:27 瀏覽:314
電腦配置有點低怎麼玩和平精英 發布:2025-01-16 23:46:14 瀏覽:818
ipfs分布式伺服器是什麼幣種 發布:2025-01-16 23:32:29 瀏覽:991
android動態icon 發布:2025-01-16 23:03:12 瀏覽:605
優酷電腦緩存在哪 發布:2025-01-16 22:58:29 瀏覽:298
進口途銳哪個配置好 發布:2025-01-16 22:35:24 瀏覽:962
骨幹路由器怎麼配置 發布:2025-01-16 22:24:39 瀏覽:244
途安2021款買哪個配置 發布:2025-01-16 22:21:01 瀏覽:329
圖片的壓縮原理 發布:2025-01-16 22:17:15 瀏覽:493