- 浏览: 248746 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
B/S结构下套打票据实现 - Lodop打印组件 -
iTarget:
原原文::http://blog.csdn.net/steve ...
加减乘除的问题 - BigDecimal -
iTarget:
原文:http://blog.csdn.net/gqm1982 ...
加减乘除的问题 - BigDecimal -
iTarget:
在Java中,要想实现精确计算,解决方案是使用BigDecim ...
加减乘除的问题 - BigDecimal -
叶寒_:
...
JSP简单标签
节 8.01 基本查询
以下是HQL/QBC/Native SQL三种查询策略
HQL策略:
session.createQuery("FROM Category c where c.name like 'Laptop%'");
QBC策略:
session.createCriteria(Category.class).add(Restrictions.like("name", "Laptop%"));
Native SQL策略
session.createSQLQuery("select {c.*} from CATEGORY {c} where NAME like 'Laptop%'"). addEntity("c",Category.class);
节 8.02 分页查询
Criteria criteria = session.createCriteria(Category.class) .add(Restrictions.like("name", "Laptop%")); criteria.addOrder(Order.asc("name")); criteria.setFirstResult(0);//初始行数 criteria.setMaxResults(20);//每页显示行数
节 8.03 数据过滤
方法 说明
Restrictions.eq =
Restrictions.allEq 利用Map来进行多个等于的限制
Restrictions.gt >
Restrictions.ge >=
Restrictions.lt <
Restrictions.le <=
Restrictions.between BETWEEN
Restrictions.like LIKE
Restrictions.in in
Restrictions.and and
Restrictions.or or
Restrictions.sqlRestriction 用SQL限定查询
(a) 应用限制
Criterion emailEq = Restrictions.eq("email", "w@163.com"); Criteria criteria = session.createCriteria(User.class); criteria.add(emailEq); User user = (User)criteria.uniqueResult();
(b) 比较表达式
Restrictions.between("amount", new BigDecimal(100), new BigDecimal(200)); Restrictions.gt("amount", new BigDecimal(100)); Restrictions.in("email", emails);//注:emails为集合 Restrictions.isNull("email"); Restrictions.isNotNull("email"); Restrictions.isEmpty("bids"); Restrictions.sizeGe("bids", 3);//bids属性大小
(c) 字符串匹配
Restrictions.like("email", "G%"); Restrictions.like("email", "G%",MatchMode.START); 注:MatchMode分为START,END,ANYWHERE,EXACT四种模式 Restrictions.like("email", "G%").ignoreCase();
(d) 组合表达式和逻辑操作符
Restrictions.or( Restrictions.and( Restrictions.like("firstname", "G%"), Restrictions.like("lastname", "K%")), Restrictions.in("email",emails));
(e) SQL表达式
Restrictions.sqlRestriction("{alias}.name='tie' and {alias}.addr='dalian'"); Restrictions.sqlRestriction("{alias}.name=?", "tie", Hibernate.STRING);//姓名为tie的对象 Restrictions.sqlRestriction("length({alias}.PASSWORD) < ?",5,Hibernate.INTEGER); //密码小于5个字符对象 Restrictions.sqlRestriction("'100' >all( select b.AMOUNT FROM BID b " + " WHERE b.ITEM_ID = {alias}.ITEM_ID)");//返回出价不大于100
(f) 子查询
节 8.04 表关联
(a) 隐式关联
隐式关联有两种方法:
1、 Criteria接口的createCriteria()方法:
session.createCriteria(Item.class) .add(Restrictions.like("description", "Foo",MatchMode.ANYWHERE)) .createCriteria("bids") .add(Restrictions.gt("amount",new BigDecimal(100))); session.createCriteria(Item.class) .createCriteria("seller") .add(Restrictions.like("email", "%@"));
2、 分配别名:
session.createCriteria(Item.class) .createAlias("bids","b") .add(Restrictions.like("description", "%Foo%")) .add(Restrictions.gt("b.amount", new BigDecimal(100))); session.createCriteria(Item.class) .createAlias("seller", "s") .add(Restrictions.like("s.email","%@"));
(b) 抓取关联
session.createCriteria(Item.class) .setFetchMode("bids",FetchMode.JOIN) .add(Restrictions.like("description", "%Foo%"))
节 8.05 投影/报表查询
(a) 简单投影
session.createCriteria(Item.class) .add(Restrictions.gt("endDate", new Date())) .setProjection(Projections.id());//返回单一属性 session.createCriteria(Item.class).setProjection( Projections.projectionList().add(Projections.id()). add(Projections.property("description")));//返回一个Object[]
(b) 统计分组
session.createCriteria(Item.class) .setProjection(Projections.rowCount()); session.createCriteria(Item.class) .setProjection(Projections.projectionList() .add(Projections.rowCount()) .add(Projections.sum("sales")) .add(Projections.avg("score")) ); session.createCriteria(Bid.class) .createAlias("bidder", "u") .setProjection(Projections.projectionList() .add(Property.forName("u.id").group()) .add(Property.forName("u.username").group()) .add(Property.forName("id").count()) .add(Property.forName("amount").avg()) );
(c) SQL投影
String sqlFragment = "(select count(*) from Item i where i.item_id = item_id) " + " as numofitems"; session.createCriteria(Bid.class).createAlias("bidder", "u") .setProjection( Projections.projectionList().add( Projections.groupProperty("u.id")).add( Projections.groupProperty("u.username")).add( Projections.count("id")).add( Projections.avg("amount")).add( Projections.sqlProjection(sqlFragment, new String[] { "numofitems" }, new Type[] { Hibernate.LONG })) );
发表评论
-
HIbernate 缓存
2009-04-02 16:48 1422节 13.01 缓存类型 1、 事务范围缓存:添 ... -
Hibernate HQL语言
2009-03-26 16:01 8376HQL查询 节 10.01 单表HQL查询 FROM C ... -
Hibernate 查询策略
2009-03-26 13:33 3424第 I 条 -
HIbernate 大批量数据处理
2009-03-25 17:11 2822节 1.01 -
Hibernate乐观锁控制
2009-03-24 17:00 10591、 -
Hibernate控制事务并发访问
2009-03-24 16:28 1569(a) -
Hibernate的Java SE事务
2009-03-24 15:26 10671、在Hibernate的配置文件中添加以下内容: < ... -
Hibernate 一对一延迟加载
2009-03-24 14:38 1717当主外键为同一字段时可以使用一对一的延迟加载 ... -
Hibernate的继承策略
2009-03-23 17:15 1454... -
Hibernate的集合映射
2009-03-23 17:13 1051... -
Hibernate持久化上下文
2009-03-23 17:10 1233持久化上下文作用 : -
Hibernate托管对象
2009-03-23 16:41 30391、 -
Hibernate 一对多关联
2007-08-14 14:44 1139java 代码 CREATE TABLE PERS ... -
HibernateSessionFactory 工具类
2007-07-31 17:37 6868java 代码 public class ... -
Hibernate 多对多关联
2007-07-31 17:36 1452xml 代码 CREATE TABLE GROUP ... -
Hibernate 一对一关联
2007-07-31 17:34 1094xml 代码 CREATE TABLE CUST ... -
Hibernate 一对一关联 (多对一的曲线实现)
2007-07-31 17:32 1578xml 代码 CREATE TABLE AUTHO ... -
Hibernate 多对一关联
2007-07-31 17:30 1222xml 代码 CREATE TABLE CUST ...
相关推荐
17.1.2 QBC检索方式 17.1.3 本地SQL检索方式 17.1.4 关于本章范例程序 17.1.5 使用别名 17.1.6 多态查询 17.1.7 对查询结果排序 17.1.8 分页查询 17.1.9 检索单个对象(uniqueResult()方法) 17.1...
Hibernate支持强大且易于使用的面向对象查询语言(HQL)。 如果希望通过编程的方式创建查询,Hibernate提供了完善的按条件(Query By Criteria, QBC)以及按样例(Query By Example, QBE)进行Hibernate查询的功能。 你也...
17.1.2 QBC检索方式 17.1.3 本地SQL检索方式 17.1.4 关于本章范例程序 17.1.5 使用别名 17.1.6 多态查询 17.1.7 对查询结果排序 17.1.8 分页查询 17.1.9 检索单个对象(uniqueResult()方法) 17.1...
17.1.2 QBC检索方式 17.1.3 本地SQL检索方式 17.1.4 关于本章范例程序 17.1.5 使用别名 17.1.6 多态查询 17.1.7 对查询结果排序 17.1.8 分页查询 17.1.9 检索单个对象(uniqueResult()方法) 17.1...
17.1.2 QBC检索方式 17.1.3 本地SQL检索方式 17.1.4 关于本章范例程序 17.1.5 使用别名 17.1.6 多态查询 17.1.7 对查询结果排序 17.1.8 分页查询 17.1.9 检索单个对象(uniqueResult()方法) 17.1...
2. 通过HQL/SQL 检索 hibernate query language (面向对象的查询语言) * a) 不再操纵表,它操纵的是持久化类的对象 b) 面向对象的 3. QBC ( query by criteria ) 更加面向对象 4. QBE ( query by Example ) 5....
内容涵盖安装 Hibernatetools 插件、Session 核心方法、持久化对象生命周期、对象关系映射(1-n、1-1、n-n、继承映射)、检索策略、检索方式(对象导航图、OID 检索、HQL、QBC、本地SQL)、Hibernate 一二级缓存、...
5.4 qbc查询方式 314 5.4.1 基本查询 315 5.4.2 qbe查询 317 5.4.3 分页查询 318 5.4.4 复合查询 318 5.4.5 离线查询 319 5.5 本地sql查询 320 5.6 hibernate的批量处理 322 5.6.1 批量插入 322 5.6.2 批量...
9.2.2qbc方式 194 9.2.3原生sql方式 195 9.3hibernate的关联查询 196 9.3.1一对一关联关系的使用 196 9.3.2一对多、多对一关联关系的使用 197 9.3.3多对多关联关系的使用 199 9.4hibernate过滤 201 9.4.1...
4 不支持HQL之类的查询语言,对于复杂查询任务,直接使用sql语言,操作简单,可直接返回对象数据。 5 对于复杂查询任务,sql语句也可以直接放在spring的配置文件中,直接注入到DAO中。 6 不支持对象之间的关联。 7 ...
4 不支持HQL之类的查询语言,对于复杂查询任务,直接使用sql语言,操作简单,可直接返回对象数据。 5 对于复杂查询任务,sql语句也可以直接放在spring的配置文件中,直接注入到DAO中。 6 不支持对象之间的关联。 7 ...
5. Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是对的? A. 重写是父类与子类之间多态性的一种表现。 B. 重写是一个类中多态性的一种表现。 C. 重载是一个类中...
\contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...
C语言实现的,提供语言和(基于SQL的)数据库进行交互的“一致性”的接口 JDBC:java版本的ODBC JDBC连接数据库的步骤: 1.注册驱动(加载驱动): 注册的方式: 1.使用类加载器(使用反射的方式) Class.for...