Hibernate查询语言:接近SQL【结构化查询语言】的语法.
Hibernate3的HQL是不支持insert;(update 和 delete 一般不用)
HQL中没有表和字段的概念,只有类和属性的概念。
HQL语言操作的是持久化类,所以区分大小写,也就是说from后面跟的是实体类(JavaBean),而不是数据库中的表名
修改
//用hql开发修改、删除不能开发添加
public void updatePart(Part part){
Transaction beginTransaction = session.beginTransaction();
String sql="update Part set name=?,pwd=?,role=? where id=?";
Query createQuery = session.createQuery(sql);
createQuery.setString(0, part.getName());
createQuery.setString(1, part.getPwd());
createQuery.setString(2, part.getRole());
createQuery.setInteger(3, part.getId());
createQuery.executeUpdate();//执行修改或删除
beginTransaction.commit();//提交事务
session.close();
}
删除
public boolean delAllUser(String id) {// 批量删除id
Transaction beginTransaction = session.beginTransaction();
String sql="delete from Part where id in("+id+")";
Query createQuery = session.createQuery(sql);
createQuery.executeUpdate();
beginTransaction.commit();//提交事务
session.close();
return true;
}
查询
public List<Dept>listPage(int currentPage, int pageSize) {
//selecct* from dept limit ?,?
//hql中不支持limit分页,只能使用如下设置
Query createQuery = session.createQuery("from Dept");//from 后接类名
/*hibernate分页错误写法
* createQuery.setInteger(0,(currentPage-1)*pageSize);
createQuery.setInteger(1,pageSize);*/
//相当于limit的第1个问号
createQuery.setFirstResult((currentPage-1)*pageSize);
//相当于limit的第2个问号
createQuery.setMaxResults(pageSize);
List<Dept>list = createQuery.list();
return list;
}