您的位置:首页 > 其它

Hibernate HQL 插入,查询,更新

2011-08-31 22:17 169 查看
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'");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: