Hibernate基本查询
Qurey接口:Hibernate专门用来执行HQL语句的查询接口
使用方式:
Query query=session.createQuery("HQL");
query.setParameter("");
List resultList=query.list();
HQL(Hibernate Query Language)
功能:
@Test
public void queryAll() {
Session session=HandleSession.getSession();
Transaction transaction=session.beginTransaction();
try{
String hql="from Student ";
Query query=session.createQuery(hql);// or "select stu from Student as stu"
List list=(List) query.list();
for(Student student:list){
System.out.println(student);
}
transaction.commit();
}catch (Exception e){
if(transaction!=null){
transaction.rollback();
}
e.printStackTrace();
}finally {
session.close();
}
}
@Test
public void querySingle(){
Session session=HandleSession.getSession();
Transaction transaction=session.beginTransaction();
try{
String hql="from Student ";
Student student=(Student) session.createQuery(hql).setMaxResults(1).uniqueResult();
System.out.println(student);
transaction.commit();
}catch (Exception e){
if(transaction!=null){
transaction.rollback();
}
e.printStackTrace();
}finally {
session.close();
}
}
Query query=session.createQuery("SELECT id,name FROM Student");
List list=query.list()
public void queryShadow(){
Session session=HandleSession.getSession();
Transaction transaction=session.beginTransaction();
try{
String hql="select a.name,a.age from Student a";
Query query=session.createQuery(hql);
List
查询实例:添加相应的构造方法
public Student(String name,int age){
this.name=name;
this.age=age;
}
@Test
public void queryShadow2(){
Session session=HandleSession.getSession();
Transaction transaction=session.beginTransaction();
try{
String hql="select new Student (a.name,a.age) from Student a";
Query query=session.createQuery(hql);
List list=query.list();
for(Student student:list)
System.out.println(student);
transaction.commit();
}catch (Exception e){
if(transaction!=null){
transaction.rollback();
}
e.printStackTrace();
}finally {
session.close();
}
}
where条件语句:查询符合条件的对象
@Test
public void queryArguments(){
Session session=HandleSession.getSession();
Transaction transaction=session.beginTransaction();
try{
/*按参数名字绑定
* String hql="select new Student (stu.name,stu.age)from Student as stu where stu.name=? and stu.age=?";
Query query=session.createQuery(hql);
query.setString(0,"wang");
query.setInteger(1,21);
* */
/*按参数名字绑定*/
String hql="select new Student (stu.name,stu.age)from Student as stu where stu.name=:name and stu.age=:age";
Query query=session.createQuery(hql);
query.setString("name","wang");
query.setInteger("age",21);
List list=query.list();
for(Student student:list)
System.out.println(student);
transaction.commit();
}catch (Exception e){
if(transaction!=null){
transaction.rollback();
}
e.printStackTrace();
}finally {
session.close();
}
}
@Test
public void queryCount(){
Session session=HandleSession.getSession();
Transaction transaction=session.beginTransaction();
try{
/*String hql="select count(stu.id)from Student as stu";*/
String hql="select max(stu.age)from Student as stu";
Query query=session.createQuery(hql);
List list=query.list();
System.out.println(list.get(0));
transaction.commit();
}catch (Exception e){
if(transaction!=null){
transaction.rollback();
}
e.printStackTrace();
}finally {
session.close();
}
}
@Test
public void queryCount(){
Session session=HandleSession.getSession();
Transaction transaction=session.beginTransaction();
try{
//按班级查询每个班的人数
String hql="select count(stu.id),stu.class from Student as stu group by stu.class";
Query query=session.createQuery(hql);
List
having关键字与group by配合使用,对分组查询后的数据进行过滤