什么是HQl
1、HQL是面向对象的,所以HQL与数据库无关
2、HQL最终也会生成SQL,也就是说 HQL使用范围是<SQL的范围
3、HQL是由query对象获得。
HQL查询
1.查询全部
@org.junit.Test
public void hql(){
String hql="from UserEntity";
List<UserEntity> list=session.createQuery(hql).list();
for (UserEntity t:list){
System.out.println(t.getUserName());
}
}
2.按照姓名模糊查询
@org.junit.Test
public void hql2(){
String hql="from UserEntity where userName like ?";
List<UserEntity> list =session.createQuery(hql).setParameter(0,"%小%").list();
for (UserEntity t:list){
System.out.println(t.getUserName());
}
}
3.返回类型书写为Object
@org.junit.Test
public void hql4(){
String hql="select id ,userName from UserEntity where userName=? ";
List<Object[]> list=
session.createQuery(hql)
.setParameter(0,"小明")
.list();
for(Object[] objs:list){
System.out.println(objs[0].toString()+"/"+objs[1].toString());
}
}
4.重新书写一个实体类,将需要的返回数据填充到类里
@org.junit.Test
public void hql5(){
String hql="select new com.project.uto.UserUto(id,userName) " +
"from UserEntity where userName=? ";
List<UserUto> list=
session.createQuery(hql)
.setParameter(0,"小明")
.list();
for (UserUto dto:list){
System.out.println("ID:"+dto.getId()+"姓名:"+dto.getUserName());
}
}
5.使用Map集合去接受数据
@org.junit.Test
public void hql6(){
String hql="select new map(id,userName) " +
"from UserEntity where userName=?";
List<Map> list=
session.createQuery(hql)
.setParameter(0,"小明")
.list();
for(Map map:list){
System.out.println(map.get("0")+"/"+map.get("1"));
}
}
6.联表查询
//联表查询
@org.junit.Test
public void hql7(){
String hql="select new Map(sd.stuName,t.teaName) from StudentEntity sd"+
" , TeacherEntity t where t.teaName=?";
List<Map> list= session.createQuery(hql).setParameter(0,"李老师").list();
for (Map map:list){
System.out.println(map.get("0")+"/"+map.get("1"));
}
}
7.分页查询
//分页查询
@org.junit.Test
public void hql8(){
//页码
int pageNum=1;
//每页显示条数
int pageCount=3;
String hql=" from TeacherEntity t where t.teaName like ?";
List<TeacherEntity> list= session.createQuery(hql).setParameter(0,"%老师%")
.setFirstResult((pageNum-1)*pageCount)//设置起始下标
.setMaxResults(pageCount).list();//设置最多输出条数
for (TeacherEntity tea:list){
System.out.println(tea.getTeaName());
}
}
8.返回单个对象
@org.junit.Test
//返回单个对象
public void hql9(){
String hql="from TeacherEntity t where t.teaName =? ";
TeacherEntity teacher= (TeacherEntity) session.createQuery(hql).setParameter(0,"李老师").uniqueResult();
System.out.println(teacher.getTeaName());
}
删除
//删除
@org.junit.Test
public void hql10(){
String hql="delete from TeacherEntity where id=?";
session.createQuery(hql).setParameter(0,12).executeUpdate();
}
修改
//修改
@org.junit.Test
public void hql12(){
String hql="update TeacherEntity set teaName=? where id=?";
session.createQuery(hql).setParameter(0,"小王老师")
.setParameter(1,1).executeUpdate();
}