hibernate是开发中常用的框架之一,简单一点说,Hibernate 是一个用来连接和操作数据库的 Java 框架,它最大的优点是使用了 ORM 技术。那hibernate怎么写sql?接下来我们就来给大家讲解一下这方面的内容。
例子:
@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工具网。
推荐阅读: