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);