Hibernate HQL 插入,查询,更新

来源:互联网 发布:arraylist 源码 编辑:程序博客网 时间:2024/06/06 01:19

Hibernate HQL
http://lyt5664681.blog.163.com/blog/static/28130046200711813222138/
/*****************登陆****************************/
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'");


原创粉丝点击