-----------------------Query的list()方法
(1)查询结果为Object对象集合
List li=this.getSession().createQuery("from TEmp").list();
main()方法里:
List li=dao.getAllEmp();
for(int i=0;i<li.size();i++){
TEmp emp=(TEmp)li.get(i);
System.out.println(emp.getEId()+" "+emp.getEName()+" "+emp.getESex());
}
(2)查询结果为Object对象组成的数组(投影查询)
List li=this.getSession().createQuery("select a.EId,a.EName,a.ESex from TEmp as a").list();
main()方法里
List li=dao.getAllEmp();
for(int i=0;i<li.size();i++){
Object[] emp=(Object[])li.get(i);
System.out.println(emp[0]+" "+emp[1]+" "+emp[2]);
}
/**
* 注册新用户并将此新添加的对象返回
* @param user
* @return
*/
public TUser addUser(TUser user) {
this.beginTransaction();
this.getSession().save(user);
this.commitTransaction();
return user;
}
--------------------利用HQL绑定参数查询(1.按参数位置绑定,2.按参数名称绑定)
(1)按参数位置绑定(需要用 ?来代替参数)
public List getAllEmp(String sex){
Query q=this.getSession().createQuery("from TEmp as a where a.ESex=?");//查询性别为男或女的员工
//Query q=this.getSession().createQuery("from TEmp as a where a.EName=? and a.ESex=?");//多条件查询
q.setString(0, sex);//设置参数,位置从0开始
List li=q.list();
this.closeSession();
return li;
}
main()方法里:
List li=dao.getAllEmp("女");
for(int i=0;i<li.size();i++){
TEmp emp=(TEmp)li.get(i);
System.out.println(emp.getEId()+" "+emp.getEName()+" "+emp.getESex());
}
(2)按参数名称绑定(需要用 : 来代替参数)
public List getAllEmp(String name,String sex){
Query q=this.getSession().createQuery("from TEmp as a where a.EName=:x and a.ESex=:y");
q.setParameter("x","张飞");
q.setParameter("y", "男");
List li=q.list();
this.closeSession();
return li;
}
-------------------只返回一个检索对象
(1)抓取第一条,不按编号查询
public TEmp getOneEmp(){
TEmp emp=(TEmp) this.getSession().createQuery("from TEmp").setMaxResults(1).uniqueResult();//返回的是第一条结果
this.closeSession();
return emp;
(2)根据编号来查询返回一个对象
public TEmp getOneEmp(int e_id){
Query q=this.getSession().createQuery("from TEmp as a where a.EId=?");
q.setInteger(0, e_id);
TEmp emp=(TEmp) q.uniqueResult();
this.closeSession();
return emp;
}
----------------分页面查询
public List getAllEmp(int currpage,int allcount){
Query q=this.getSession().createQuery("from TEmp");
q.setFirstResult(currpage);
q.setMaxResults(allcount);
List li=q.list();
this.closeSession();
return li;
}
//统计有多少个员工
public int getCount(){
int count=0;
Query q=this.getSession().createQuery("select count(*) from TEmp");
count=Integer.parseInt(q.uniqueResult().toString());
return count;
}
----------------分组查询
public List getByGroup(){
List li=this.getSession().createQuery("select a.ESex,count(*) from TEmp as a group by a.ESex").list();
this.closeSession();
return li;
}
---------------批量更新
public void updateAll(String name){
this.beginTransaction();
Query q=this.getSession().createQuery("update TEmp as a set a.EName=?");
q.setString(0, name);
q.executeUpdate();
this.commitTransaction();
}
---------------------------------------QBC动态查询-------------------------------------
(1)根据性别来查询
public List getEmp(String sex){
Criteria criteria=this.getSession().createCriteria(TEmp.class);
criteria.add(Restrictions.eq("ESex", sex));
List ar=criteria.list();
this.closeSession();
return ar;
}
main方法里:
List li=dao.getEmp("女");
for(int i=0;i<li.size();i++){
TEmp emp=(TEmp)li.get(i);
System.out.println(emp.getEName()+" "+emp.getESex());
}
(2)全查询所有性别为男的员工并且关联部门
public List getEmp(String sex){
Criteria criteria=this.getSession().createCriteria(TEmp.class);
criteria.add(Restrictions.eq("ESex", sex));
criteria.createCriteria("TDept");//此处关联,不加报错
List ar=criteria.list();
this.closeSession();
return ar;
}
main方法里:
List li=dao.getEmp("女");
for(int i=0;i<li.size();i++){
TEmp emp=(TEmp)li.get(i);
System.out.println(emp.getEName()+" "+emp.getESex()+emp.getTDept().getDName());
}
(3)按员工姓名模糊查询(关联部门)
public List getEmp(String name){
Criteria criteria=this.getSession().createCriteria(TEmp.class);
criteria.add(Restrictions.like("EName",name, MatchMode.ANYWHERE));
criteria.createCriteria("TDept");
List ar=criteria.list();
this.closeSession();
return ar;
}
main方法里:
List li=dao.getEmp("操");
for(int i=0;i<li.size();i++){
TEmp emp=(TEmp)li.get(i);
System.out.println(emp.getEName()+" "+emp.getESex()+emp.getTDept().getDName());
}
最后,欢迎访问风格清新简洁的轻博客网站[指尖一刻]