hibernate怎么写sql?hibernate执行sql有哪些方式?

阳光 2022-08-19 16:16:12 java常见问答 9950

hibernate是开发中常用的框架之一,简单一点说,Hibernate 是一个用来连接和操作数据库的 Java 框架,它最大的优点是使用了 ORM 技术。那hibernate怎么写sql?接下来我们就来给大家讲解一下这方面的内容。

hibernate怎么写sql.png

例子:

@RequestMapping("/purch.action")
public String purch(Model model, String id, HttpSession httpsession) {
// 拿到session中的user
User user = (User) httpsession.getAttribute("user");
// 先登录 才能购买
if (httpsession.getAttribute("user") == null) {
model.addAttribute("message", "please login before but the ticket!");
return "redirect:/purcherr.jsp";
}
// 开启数据库获得session tx
Session session = HibernateUtil.openSession();
Transaction tx = session.beginTransaction();
// 拿到数据库中当前用户的cno
String sqlgetcno = "select * from user where username = ?";
SQLQuery sqlQuerycno = session.createSQLQuery(sqlgetcno);
sqlQuerycno.setString(0, user.getUsername());
sqlQuerycno.addEntity(User.class);
user = (User) sqlQuerycno.list().get(0);
if (user.getCno() == null) {
user.setCno(id);
} else {
String cno = user.getCno() + "," + id;
user.setCno(cno);
}
String sql = "update user set cno=? where username=?";
SQLQuery sqlQuery = session.createSQLQuery(sql);
sqlQuery.setString(0, user.getCno());
sqlQuery.setString(1, user.getUsername());
sqlQuery.executeUpdate();
tx.commit();
model.addAttribute("message", id);
return "redirect:/purchsuccess.jsp";
}

第一步:写sql

第二步:

SQLQuery sqlQuery = session.createSQLQuery(sql);
sqlQuery.setString(0, user.getCno());
sqlQuery.setString(1, user.getUsername());

第三步:执行

sqlQuery.executeUpdate();

hibernate执行sql有哪些方式?

方式一:直接使用HibernateTemplate的find()方法,find方法支持执行hql语句

List
list = this.getHibernateTemplate().find(finalHql, params);

方式二:获取SessionFactory,再获取Session

SessionFactory sf = this.getHibernateTemplate().getSessionFactory();
Session s = sf.getCurrentSession();
Query query = s.createQuery(finalHql);
query.setParameter(0, params[0]);
query.setParameter(1, params[1]);
Listlist = query.list();

方式三:使用hibernateTemplate调用回调函数

Listlist = this.getHibernateTemplate().execute(new HibernateCallback() 
{
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(finalHql);
if(params!=null && params.length>0){
for(int i=0;i<params.length;i++){< p="">
query.setParameter(i, params[i]);
}
}
return query.list();
}
});

hibernate执行sql就是以上这几种方式,hibernate是一个能够连接数据库的框架,并且还可以将对象中的数据自动存储到数据库中,也可以反过来将数据库中的数据自动提取到对象中,整个过程不需要人工干预,大大提高了开发人员的工作效率!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

javaidea怎么更换背景颜色?javaidea插件如何安装?

java用哪个软件编译比较好?java编译软件分享

java代码怎么运行?java代码编译出错是什么原因?