您的位置:首页 > 数据库

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

2013-12-12 17:42 302 查看
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(hq
4000
l);             

 //默认查询出来的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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql 优化 hibernate