-----------------------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());
}
最後,歡迎訪問風格清新簡潔的輕博客網站[指尖一刻]