hiberante-----hql语句查询

1.hql语句查询

1.带条件的查询
   Query query =  session.createQuery("from  实体类  where  字段名 = ?  or  name=:uname")
             注意:   ==name=:uname   (赋值)    =:》类似于冒号              == 
    query.setPrameter("属性名","值");
    
    
一条龙服务:session.createQuery("from  实体类  where  字段名 = ?  or  name=:uname").setParmeter().setParameter("值1","值2").list();
2.查询指定字段(使用投影查询)
list<Object> list  = session.createQuery("select  字段名1,字段名2  form 表名").list;
for (Object obj : list){
    Object[] emp = (Object)[] obj;
    System.out.println(emp[0]+"___"+emp[1]);
}

投影查询为什么这样可以查出来???
    Object  --->   投影(不会把结果封装成对象,而是封装成数组)
    obj     --->   即为一条数据,实质为了一个数组,包含多个字段


4.连接查询(使用投影查询)
list<object> list = session.createQuery(from 表名 别名  inner join  别名.属性名).list;
for(Object obj : list){
    Object[]  o = Object[] obj;
    类名1  emp  = (emp) o[0];
    类名2  dept = (dept) o[1];
    System.out.println(emp.getId()    +   dept.getID());
}

5.更新数据
Query query  = session.createQuery("update 类名 set name=?,age=? where empid=?");
query.setParameter(0,"小白");
query.setParameter(1,"20");
query.setParameter(2,"1");

query.executeUpdate();
 ts.commit();   --->提交事务(在修改和删除的时候必须需要要提交事务)


6.分页查询
List<类名> list = session.createQuery(form 类名).setFirstResult(3-1)*2).setMaxResults(1).list;
for(类名  emp : list){
    System.out.println(emp.getID()+"___"+emp.getNmae());
}


setFirstResult(3-1)*2)   --->  当前页减1    (当前页-1)* 条数
setMaxResults(1)         ---> 每页条数      (每页显示的条数)

7.对象查询
Criteria c = session.createQuery(类名.class);
    c.add(Restrictions.eq("empId",2));
    c.add(Restrictions.like("name","小3"))  --- >模糊查询
    c.add(Order.desc("age"));               --- >排序
List<类名> list = c.list();
for(类名 emp : list){
    System.out.println(emp.getID()+"___"+emp.getNmae());
}


查询条件一般是由web层页面传递过来  由web层传给service  在传给dao层 组装 拼凑 dao
8.离线查询
DetachedCriteria dc = DetachedCriteria.forClass(类名.class);
Criteria  c = dc.add(RestrictableCriteria(session));
System.out.println(c.uniqueResult); --- >uniqueResul(唯一的结果集)

session.close()    --->    关闭

我们在sevice   拼凑查询条件      完了之后   我们的  dao  层  findAll(DetachedCriteria dc)



9.sql语句查询
写这个的都是瓜皮

总结(hql语句 与 sql语句 的区别)
1.hql  与  sql 语句语法类似,但是hql语句操作的类和属性  而sql  语句 操作的是 表和  字段


注意:hql语句中除了类和属性之外是不区分大小写的

2.常用的查询操作
                1.查询全部数据
                        form 类名
                
                2.带数据的查询
                    form 类名  where 属性名 (=  >  <  != like 等等) 值
                3.查询指定字段
                    select 属性列表  form 类名 where 条件表达式
                    
                    注意: 查询返回的是list 集合    
                            投影   object 数组  
                            
                4.聚合函数 
                    sum  count   avg   等等   
                    
                5.连接查询
                    form 外键表对象 别名 inner/left/right join 别名.主键表对象属性
                    
                6.修改数据
                    说明:执行增删改查  调用   executeUpdate () 方法
                    
                7.分页查询 
                    setfirstresult (当前页-1) * 条数 )
                    setMaxresult (条数)
               
               
                8.本地查询
                    使用sql语句
                    
                9.对象查询
                    完全脱离了表和字段   直接 操作对象  
                    
                    
                10.离线查询 


整合 c3p0 连接池

1.第一步
    写配置文件
                把c3p0的配置信息整合到hibernate的xml文件中

2.第二步
    找到etc   打开  hibernate.properties  找  c3p0 的相关配置
    

<property name=""> ora.hibernate.connection.C3P0ConnectionProvider</property>



如何查看???
log4j   info

mysql命令

创建序列化(implements Serializable):

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值