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

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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值