本文共 7198 字,大约阅读时间需要 23 分钟。
Hibernate HQL
/*****************登陆****************************/ public boolean userLogin(String username, String password) { boolean flag = false; try { session = HibernateSessionFactory.getSession(); query = session .createQuery("select info.username,info.password from Userinfo as info where info.username = ? and info.password =?"); query.setString(0, username); query.setString(1, password); Iterator it = query.iterate(); if (it.hasNext()) { flag = true; } } catch (HibernateException e) { e.printStackTrace(); } finally { HibernateSessionFactory.closeSession(); } return flag; } /*****************查询所有****************************/ public List selectAll() { List alist = new ArrayList(); try { session = HibernateSessionFactory.getSession(); query = session .createQuery("select info.stuid, info.stuname,info.address from Stuinfo as info"); alist = query.list(); } catch (HibernateException e) { e.printStackTrace(); } finally { HibernateSessionFactory.closeSession(); } return alist; } /*****************插入****************************/ public boolean infoAdd(int stuid, String stuname, String address) { boolean flag = false; try { session = HibernateSessionFactory.getSession(); trans = session.beginTransaction(); Stuinfo info = new Stuinfo(); info.setStuid(new Long(stuid)); info.setStuname(stuname); info.setAddress(address); session.save(info); trans.commit(); flag = true; } catch (HibernateException e) { e.printStackTrace(); trans.rollback(); flag = false; } finally { HibernateSessionFactory.closeSession(); } return flag; } /*****************更新****************************/ public boolean updateInfo(int stuid, String stuname, String address) { boolean flag = false; try { session = HibernateSessionFactory.getSession(); trans = session.beginTransaction(); StuinfoDAO dao = new StuinfoDAO(); Stuinfo info = new Stuinfo(); info = dao.findById(new Long(stuid)); info.setStuname(stuname); info.setAddress(address); dao.save(info); trans.commit(); flag = true; } catch (HibernateException e) { e.printStackTrace(); trans.rollback(); flag = false; } finally { HibernateSessionFactory.closeSession(); } return flag; } /*****************更新2****************************/ ransaction tx = null try { tx = session.beginTransaction(); String hql = "update Student s set s.name = '22' where s.id = 11"; Query query = session.createQuery(hql); query.executeUpdate(); tx.commit()tx = null;
}catch(Exception e) { e.printStackTrace(); if(tx !=null) { tx.rollback(); //失败则回滚 } } finally { session.close(); } /*****************删除****************************/ public boolean deleteInfo(int stuid) { boolean flag = false; try { session = HibernateSessionFactory.getSession(); trans = session.beginTransaction(); Stuinfo info = new Stuinfo(); StuinfoDAO dao = new StuinfoDAO(); info = dao.findById(new Long(stuid)); dao.delete(info); trans.commit(); flag = true; } catch (HibernateException e) { e.printStackTrace(); trans.rollback(); flag = false; } finally { HibernateSessionFactory.closeSession(); } return flag; } /*****************删除2****************************/ Session session = HibernateSessionFactory.currentSession(); // 创建SESSION Transaction tx = null //声明事务 try { tx = session.beginTransaction(); //开始事务 String hql = "delete Student s where s.name = 'googol' "; Query query = session.createQuery(hql); query.executeUpdate(); tx.commit() //一定要提交tx = null;
}catch(Exception e) { e.printStackTrace(); if(tx !=null) { tx.rollback(); //失败则回滚 } } finally { session.close(); }/************************跳转*************************/
response.getWriter().write("<script>alert('register ok')</script>");
response.getWriter().write("<script>window.location.href='form/loginAction.jsp'</script>");PS: response.sendRedrecter方法比alert 先执行 因为response在服务器alert属于客户端方法
故在alert执行之前先执行跳转 从而alert则不会被执行(执行前已经跳转) 故把跳转操作放到客户端
/************************************************************增删查改DAO*********************************************************************/ /*********************************************************************************************************************************/ package Dao;
import java.util.Iterator;
import hiber.HibernateSessionFactory;
import hiber.Userinfo;import org.hibernate.Query;
import org.hibernate.Session; import org.hibernate.Transaction;public class LoginDao {
Session session = null;Transaction tx = null;
Query query = null;
// login
public boolean loginUser(String userName, String passWord) { boolean f = false; try { String hql = "select info from Userinfo as info where info.username = ? and info.password = ?"; query = session.createQuery(hql); query.setString(0, userName); query.setString(1, passWord); Iterator it = query.iterate();if (it.hasNext()) {
f = true; } else { f = false; }} catch (Exception e) {
e.printStackTrace(); } finally { session.close(); } return f; }// insert
public boolean insertUsers(String userName, String passWord) { boolean f = false; try {session = HibernateSessionFactory.getSession();
tx = session.beginTransaction(); Userinfo info = new Userinfo(); info.setUsername(userName); info.setPassword(passWord); session.save(info); tx.commit(); f = true; } catch (Exception e) { f = false; tx.rollback(); e.printStackTrace(); } finally { session.close(); } return f;}
// delete
public boolean deleteUser(String userName) {boolean f = false;
try { session = HibernateSessionFactory.getSession(); tx = session.beginTransaction(); String hql = "delete Userinfo info where userName = '" + userName + "'"; query = session.createQuery(hql); query.executeUpdate();// query.setString(0, userName);
tx.commit();f = true;
} catch (Exception e) {
tx.rollback(); e.printStackTrace(); } finally { session.close(); } return f; } //update public boolean updateUser(String userName, String passWord) { boolean f = false; try { session = HibernateSessionFactory.getSession(); tx = session.beginTransaction(); String hql = "update Userinfo info set info.password = '"+ passWord + "' where info.username = '" + userName + "' "; query = session.createQuery(hql); query.executeUpdate(); tx.commit(); f = true; } catch (Exception e) { tx.rollback(); e.printStackTrace(); } finally {}
return f; } }
今天和大家一起学习一下HQL
1。请把以前sql中的表名换成类名,把字段名换成属性名。注意我不是说HQL里的类名都是表名。类名>表名
2.这里就看一个select 类的例子,一便说明一下多态
person是man和woman的父类吧,在HQL中可以这样写:
from Person p
这就表示查出所有人了。
3.当然sql中的select from where group by having order by这些,HQL也是支持的了。
4.取一条记录query.uniqueResult()
5.取多个记录query.list()
6.分页。在执行查询之前
query.setFirstResult(0)
query.setMaxResult(2)
注意在这里的0是开始下标。2是从开始下标的一页的记录数
7.绑定参数
?---------------------query.setString(1)
:name---------------query.setString(name,"jiaxiao")
:entity---------------query.setEntity(entity,jnew Person())
8.内连接
from Company c inner join c.employees e;
相当于select c.*,e.* from company c, c.employees e where c.id=e.compid(+)
返回的是一个object[]
还可以级联
from A a left join a.b b leftc join b.c c
隐式查询:
from Province p where p.City.name="guanyuan";
此外还有子查询,组函数等
from Company c where 1< ( select count(*) from c.employees e);
投影查询:
select new 包名.类名(e.name,c.name) from company c left join c.employee e
这个类为一个普通的POJO只有 e.name,c.name两个属性
集合过滤
select c from Company c left join Employee e
sess.createFilter(c.getEmployee(),"where e.name='xx'");
转载地址:http://vclmi.baihongyu.com/