java连接mysql 用hibernate怎么写查询语句

 我来答
匿名用户
2016-10-17
展开全部
第一种方式:HQL(Hibernate Query Languge,Hibernate 查询语言)查询
是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念,HQL 是应用较为广泛的方式
语法:[select/update/delete……] from Entity [where……] [group by……] [having……] [order by……]

(1).没使用Spring框架的写法:
使用HQL需要四步
得到Session、编写HQL语句、创建Query对象(Query接口是HQL 查询接口。它提供了各种的查询功能)、执行查询,得到结果
sessionFactory =
new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
String hql = “from Street”;
Query query = session.createQuery(hql);
List<Street> list = query.list();

(2).使用Spring框架的写法:
String queryString = "select form entity ....";
List list=getHibernateTemplate().find(queryString);

第二种方式:Criteria 查询
Criteria 查询采用面向对象方式封装查询条件,又称为对象查询;
就是对SQL 语句进行封装,采用对象的方式来组合各种查询条件
由Hibernate 自动产生SQL 查询语句

(1).没使用Spring框架的写法;
Criteria由Hibernate Session进行创建
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
Session session = sessionFactory.openSession();
Criteria criteria = session.createCriteria(User.class);
List result = criteria.list();
Iterator it = result.iterator();

(2)使用Spring框架的写法:
import org.hibernate.criterion.DetachedCriteria;

DetachedCriteria criteria=DetachedCriteria.forClass(ObjectEntity.class);
criteria.add(Restrictions.eq("propertyName", propertyValue));
List result=getHibernateTemplate().findByCriteria(criteria);

第三种方式:使用SQL语句查询(以下都是使用了Spring框架的写法)
1).这是把执行结果放到了一个类里:(这个类通常使用VO实体,VO实体一般就只用来接收查询结果)
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
StringBuffer hqlBuffer = new StringBuffer("");
hqlBuffer.append("select column_Name from ...");//里面是SQL语句

SQLQuery sqlQuery = session.createSQLQuery(hqlBuffer.toString());
sqlQuery.addScalar("propertyName",Hibernate.STRING);//该propertyName是 ObjectVO实体的一个属性
sqlQuery.setResultTransformer(Transformers.aliasToBean(ObjectVO.class));
List list = sqlQuery.list();
return list;//此处list集合中存放的是ObjectVO对象
}
});

2).返回结果放到list中的:
final String queryString = "";//sql语句
List resultList=getHibernateTemplate().executeFind(new HibernateCallback() {
public List doInHibernate(Session session) throws HibernateException, SQLException {
SQLQuery sqlQuery = session.createSQLQuery(queryString);
List list=sqlQuery.executeUpdate();
return list;
}
});

3).无返回结果:
final String queryString = "";//SQL语句
getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
SQLQuery sqlQuery = session.createSQLQuery(queryString);
sqlQuery.executeUpdate();
return null;
}
});
简尘邶凌春
2019-06-03 · TA获得超过3668个赞
知道大有可为答主
回答量:3082
采纳率:34%
帮助的人:397万
展开全部
你可以试试在hibernate.cfg.xml文件中加上<property
name="format_sql">true</property>,那可以更清楚的看清你的sql语句。还有就是你有没有是过用其他查询方法,比如Criteria,Query
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式