当前位置:首页>开发>正文

如何用hibernate直接进行SQL语句查询 Hibernate数据查询

2023-05-22 11:30:06 互联网 未知 开发

 如何用hibernate直接进行SQL语句查询 Hibernate数据查询

如何用hibernate直接进行SQL语句查询

如何用hibernate直接进行SQL语句查询
public int getLogin(String username,String password)
{ String sql="select * from user_table where username=? and password=?"
SQLQuery query=getSession().createSQLQuery(sql).addEntity(UserTable.class)
query.setString(0,username)
query.setString(1,password)
return Integer.parseInt(query.uniqueResult().toString())

}
public static void main(String[] args) {
new UserTableDAO().getLogin("zhang","yuan")
}

Hibernate数据查询

前两种性质是一样的,你看下源码就知道了:
Spring的org.springframework.orm.hibernate3.HibernateTemplate中的方法:
public List find(String queryString) throws DataAccessException {
return find(queryString, (Object[]) null)
}

public List find(final String queryString, final Object... values) throws DataAccessException {
return executeWithNativeSession(new HibernateCallback<List>() {
public List doInHibernate(Session session) throws HibernateException {
Query queryObject = session.createQuery(queryString)
prepareQuery(queryObject)
if (values != null) {
for (int i = 0 i < values.length i ) {
queryObject.setParameter(i, values[i])
}
}
return queryObject.list()
}
})
}

其实org.hibernate.impl.SessionImple里还有一种find(String hql)的。

至于Criteria,其实就是方便面向对象的编码者而设计的,让编码者省去考虑面向关系的逻辑,其实质是一样的。你可以查下源码吧。

Hibernate有哪几种查询数据的方法

转录: 从点到面,讲讲hibernate查询的6种方法。分别是HQL查询 ,对象化查询Criteria方法,动态查询DetachedCriteria,例子查询,sql查询,命名查询。 如果单纯的使用hibernate查询数据库只需要懂其中的一项就可以完成想要实现的一般功能

hibernate 组合查询

用sqlQuery,在sql语句中参数用占位符?代表参数值,再对sqlquery调用setParameter(占位符index,value)
其实Criteria分页也是蛮方便的,不用自己写sql那么麻烦
session.createCriteria(classs)
Long totalCount = (Long)(c.setProjection(Projections.rowCount()).uniqueResult())//总数
c.setMaxResults(page.getPageSize())
c.setFirstResult(page.getFirst()-1) //max first 分页限制条件 也就是你的a和b
c.setProjection(null)
。。。等等查询条件
c.list()查询结果

最新文章