hibernate学习笔记4 ------QBC/命令HQL查询/本地SQL/存储过程

Session.createCriteria(Emp.class)

Criteria 查询采用面向对象方式封装查询条件,又称为对象查询。由Hibernate自动产生SQL查询语句

Criteria 由Hibernate Session进行创建,使用Criteria的add(),方法加入“条件实例”,条件实例由Restrictions静态方法返回。

Restrictions.eq() :     

Restrictions.gt():   

Restrictions.ge():   

Restrictions.lt():

Restrictions.le():

Restrictions.between():

Restrictions.like():

Restrictions.in():

Restrictions.and():

Restrictions.or():


Criteria.addOrder(Order.desc("   "));    //asc


Criteria.Example  示例查询        关于Criteria的Example的点滴记录


Projections.avg()

Projections.max()

Projections.min()

Projections.groupProperty()

Projections.count()

Projections.sum()

createCriteria(Emp.class,"e").setProjection(Projections.groupProperty("e.dept.deptno))    分组

.setProjection(Projections.property("dname")).list()   返回String

.setProjection(Projections.projectionList().add(Projections.property("ename")).add(       )....).list();


分页

.setFirstResult((pageIndex-1)*pageSize);

.setMaxResults(pageSize);


命令HQL语句:

</class>之后 实体类.hbm.xml内:

<query name="findAll" >

<![CDATA[

from Emp

]]>

</query>


List<>  list = session.getNameQuery("findAll").list();


<![CDATA[

from Emp e where e.eno=:eno

]]>

.setParameter("eno",10);


本地SQL:

String sql = "select {l.*} from login l where l.username='Tom'";

SQLQuery query = session.createSQLQuery(sql).addEntity("e",Emp.class);    // 指定实体类

List list = query.list();


String sql = "select {e.*},{d.*} from emp e,dept d where e.deptno=d.deptno and e.job=:e.job";

List<Object[]> list = session.createSQLQuery(sql).addEntity("e",Emp.class).addJoin("d","e.dept").list();


定制SQL:    可见官方文档

主键放在最后    仿照HQL写的


存储过程:

1、使用命令HQL

2、使用CallableStatement

3、使用定制SQL


一、使用命令HQL

<sql-query name="saves">

{call proc_name(p1,p2)}

</sql-query>

Query


create or replace procedure pro_list(sys_cur out sys_reference)

as

begin

 open sys_cur for select * from mydept;

end;

var x cursor


int count = session.getNamedQuery("saves").setParameter(0," ").executeUpdate();


<sql-query name="list" callable="true">

{call proc_list(?)}

<return alias="mm"(别名)  class="   "/ >

</sql-query>


session.getNamedQuery("list").list();


二、CallableStatement

session.doWork(new Work()){

...

...

{ CallableStatement cs = connection.prepareCall("{call proc_save(?,?)"};

cs.setString(1," ");

cs.setString(2," ");

cs.executeUpdate();

});

设置输出参数

cs.registerOutParameter(1,OracleTypes.CURSOR);

ResultSet rs = (ResultSet) cs.getObject(1);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值