Hibernate高效查询,只查询部分/指定字段

来源:互联网 发布:金山打字mac 编辑:程序博客网 时间:2024/05/16 03:05

hibernate 部分字段查询


public List findBySql(String sql){

Session session=getSession();

Query query=session.createQuery(sql);

List list=query.list();

return list;

}

//下面就是查询字段了

List list=dao.findBySql("select id,uname from Member");

System.out.println(list.size());

for (int i = 0; i < list.size(); i++) {

Object[] o=(Object[])list.get(i);

System.out.println("id="+o[0]+" | name = "+o[1]);

}

List list2=dao.findBySql("select uname from Member");

for (Iterator iterator = list2.iterator(); iterator.hasNext();) {

String name = (String) iterator.next();

System.out.println(name);

}

List list3=dao.findBySql("select id,uname from Member");

for (Iterator iterator = list3.iterator(); iterator.hasNext();) {

Object[] name = (Object[]) iterator.next();

System.out.println(name[0]);

}

4.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回 
引用//查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了   
        String hql = " selectnew list(name,passwd) from Users";   
        Query query = session.createQuery(hql);   
        //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是List集合了  
        List<List> list = query.list();   
        for(List user : list){   
            String name = (String)user.get(0);   
            String passwd = (String)user.get(1);   
               
            System.out.println(name + " : " + passwd);   
        }   
        /** 
        输出结果为: 
         name1 : password1 
        name2 : password2 
        name3 : password3 
         */
5.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回 
Java代码//查询其中几个字段,添加newmap(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了             

String hql = "select newmap(name,passwd) from Users";             

  Query query = session.createQuery(hql);             

 //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了              List<Map> list = query.list();             

 for(Map user : list){             

     //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值              

   //如果将hql改为:Stringhql= "selectnewmap(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了              

    String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形               

   String passwd = (String)user.get("1");                                  

   System.out.println(name + " : " + passwd);          

     }      

二,修改部分字段:

//HQL-Update 
String hql = "update Supplier set name = :newName where name = :name";
Query query = session.createQuery(hql);
query.setString("name","Supplier Name 1");
query.setString("newName","s1");
int rowCount = query.executeUpdate();


String hql_update="update from Member set uname='赖春华' where id=1";

dao.update(hql_update);

//update 方法如下:

public int update(String hql){

Session session=getSession();

Query query = session.createQuery(hql);

session.beginTransaction().begin();

session.beginTransaction(); 

int i= query.executeUpdate(); 

session.beginTransaction().commit();

session.flush();

return i;

}


0 0