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

来源:互联网 发布:js怎么设置left值 编辑:程序博客网 时间:2024/06/06 07:41

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
原创粉丝点击