- 浏览: 399148 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (198)
- java (28)
- J2EE (19)
- struts (33)
- sping (13)
- hibernate (18)
- mybatis (15)
- connection pool (3)
- DB (26)
- SQL (21)
- html (13)
- js (7)
- json (3)
- jquery (2)
- document (17)
- linux (15)
- C# (1)
- url (2)
- eweb4j (1)
- Turbine (1)
- 框架 (11)
- jdbcTemplate (3)
- aop (2)
- windows (2)
- ubuntu (1)
- eclipse (11)
- JPA (8)
- svn (4)
- get 传值 (2)
- mysql (5)
- oracle (2)
- hadoop (1)
- MongoDB (2)
- spring (1)
- python (1)
最新评论
-
jcbingjc:
楼主,你好,按照上面的配置,我报如下错误:Missing Pe ...
[properJavaRDP]在网页中实现远程连接 -
sucful:
折腾了半天跑不通 ,要传就搞个完整的吧
Struts2 <sx:div/>实现页面模块异步刷新 -
Kattou:
你好! 看了你写的这个分页 感觉很好, 但是不怎么会用么,请指 ...
jsp分页控件 -
我叫PSB:
地址完全用不了
eclipse中的安装 jseclipse -
1111emotion:
我的工程里还是有乱码的情况,我该改的地方都改了。
Eclipse/MyEclipse更改默认字符集 设置UTF-8
简单查询 返回所有Topic对象的记录: SELECT t FROM Topic t 按条件查询Topic: SELECT DISTINCT t FROM Topic t WHERE t.topicTitle = ?1 ?1表示用位置标识参数,通过Query的setParameter(1, "主题1")绑定参数。DISTINCT表示过滤重复数据。 如果以命名绑定数据,改成: SELECT DISTINCT t FROM Topic t WHERE t.topicTitle = :title 需要通过Query的setParameter("title", "主题1")绑定参数。 关联查询 1.One To Many 返回PollOptions对应的PollTopic对象,可以: SELECT DISTINCT p FROM PollTopic p, IN(p.options) o WHERE o.optionItem LIKE ?1 语法和SQL以及HQL都有很大的区别,它直接实体属性连接关联的实体,通过PollTopic的options属性关联到PollOption实体上。 该查询语句的另外两种等价写法分别是: SELECT DISTINCT p FROM PollTopic p JOIN p.options o WHERE o.optionItem LIKE ?1 和 SELECT DISTINCT p FROM PollTopic p WHERE p.options.optionItem LIKE ?1 2.Many To One 希望查询某一个调查主题下的所示调查项,可以: SELECT p FROM PollOption p JOIN p.pollTopic t WHERE t.topicId = :topicId 关系操作符 空值比较符:is null、is not null 、is empty、is not empty 范围比较符:BETWEEN..AND和>、>= 、<、<=、<>。 子查询 支持EXISTS、ALL、ANY。如查询出拥有6个以上选项的调查主题: SELECT t FROM PollTopic t WHERE (SELECT COUNT(o) FROM t.options o) > 6 可用函数 ◆ CONCAT(String, String):合并字段串; ◆LENGTH(String):求字段串的长度; ◆LOCATE(String, String [, start]):查询字段串的函数,第一个参数为需要查询的字段串,看它在出现在第二个参数字符串的哪个位置,start表示从哪个位置开始查找,返回查 找到的位置,没有找到返回0。如LOCATE ('b1','a1b1c1',1)返回为3; ◆SUBSTRING(String, start, length):子字段串函数; ◆TRIM([[LEADING|TRAILING|BOTH] char) FROM] (String):将字段串前后的特殊字符去除,可以通过选择决定具体的去除位置和字符; ◆LOWER(String):将字符串转为小写; ◆UPPER(String):将字符串转为大写。 ◆ABS(number):求绝对值; ◆MOD(int, int):求模; ◆SQRT(double):求平方; ◆SIZE(Collection):求集合大小。 更改删除语句 可用EntityManager或JPA查询语言进行实体的更新、删除操作。 1.更新: UPDATE PollOption p SET p.optionItem = :value WHERE p.optionId = :optionId 2.删除: DELETE FROM PollOption p WHERE p.optionId = :optioned 之后使用Query接口的executeUpdate()方法执行更新、删除。 排序和分组 排序:Order by 属性名 desc [asc] 聚集函数: ◆AVG:平均值,返回double; ◆MAX:最大值; ◆MIN:最小值; ◆SUM:累加和; ◆COUNT:集合数 通过HAVING对聚集结果进行条件过滤: SELECT COUNT(p),p.pollTopic.topicId FROM PollOption p GROUP BY p.pollTopic.topicId HAVING p.pollTopic.topicId IN(1,2,3) 如何取得结果?注意使用聚集函数不是返回一个对应的实体List,而是返回一个List<Object>,以下是返回上面查询的结果(使用Object数组): List list= query.list(); Object obj[] = null;//声明对象数组 Integer count = null; Integer topicId = null; for(int i=0;i<list.size();i++){ obj = (Object[]) list.get(i); count = (Integer) obj[0]; topicId = (Integer) obj[1]; //逻辑操作 }
select name ,age from user; //原生SQL语句 select u.name,u.age from User u; //JPQL语句 select u from User u; //JPQL语句 SQL语句是在数据库空间中对字段,列,行进行操作 JPQL语句是在EJB实体空间中面向对象,属性进行操作 JPQL必须由JPA的JPQL解析器解析为SQL才能执行,必须先获取Query对象 参数查询 1命名参数查询 entityManager.createQuery("select u from User u where u.age=:param"); query.setParameter("param",24); List<User> result=(List<User>)query.getResultList(); 2位置参数查询 "select u from User u where u.age=?1" query.setParameter(1,24); 3实体参数(JPQL中除了基本类型外,还可以是对象类型) "select u from User u where u.person=?1" Person p=new Person(); p.setId(1); query.setParameter(1,p); JPQL运算符 算术运算符 + - * / 关系运算符 = > < >= <= <> 逻辑运算符 between ,like , in , is null,is empty,member of,not ,and ,or 1 not "select u from User u where not(u.cityid=?1)" 2 between和sql中一样 3 in 在给定的值列表中查询 "select u from User u where u.cityid in(1,2,3)" 4 like ( _ 表示一个字符,%表示任意数量字符 ) xxxx where u.name like ' 张% ' 5 is null (实体的属性是否为空,即实体属性映射的字段是否为空) "select u from User u where u.cityid is null" 6 is empty (与is null 不同的是,它针对实体的集合属性 内有没有元素。 虽然集合对象是存在的,但是集合内没有元素) select o from Order o where o.orderItems is empty 条件查询 1排序查询 asc升序 desc降序 order by p.age desc,p.birthday asc 2聚合函数查询 avg() 平均值,返回Double count()返回Long max() min() sum() 以上除了count外其它的函数的参数对应的是 单个的字段,即属性而不是对象 HAVING和WHERE的区别。一个是先分组,再对组进行筛选;一个是先筛选,然后对筛选后的记录进行分组。 构造器查询 "select new com.jsun.Person(p.name) from Person p" Person有这个构造器时,即Person(String name),成功返回对象。 关联查询(实际工作中仍然会有这种需求) left join 允许右边实体表达式的实体为空,这里的实体指 集合属性 inner join 右边必须存在 "select o from Order o inner join o.orderItems" 在默认查询中,集合属性是懒加载的。只有用的时候JPA才会再发SQL语句 在查询的时候我们希望一次全抓取出来怎么办?用 fetch (其实left join和inner join在这里使用主要是为了配合fetch,一次抓取,因为默认的是懒加载) "select o from Order oinner join fetcho.orderItems" 排除相同记录DISTINCT select distinct o from Order o (还可以配合聚合函数使用) 如 select count(distinct o) from Order o JPQL内置函数 字符串函数 concat(str1,str2) substring(string,position,length) trim( [leading | trailing | both] sub_str from str) upper(str) lower(str) length(str) locate(searchString,initPosition) 日期,时间函数 CURRENT_DATE //返回当前日期(这是数据库端的时间) CURRENT_TIME //返回当前时间 CURRENT_TIMESTAMP //返回当前日期时间 数学函数 ABS(number) //绝对值 SQRT(number) //平方根 MOD(num,div)//取模 SIZE(collection) //返回集合中元素的数量 如:select o from Order o where size(o.items)>10 使用子查询 xxxx in(子查询) xxxx not in(子查询) exists(子查询) notexists(子查询 ) exists存在的意思 即子查询的结果不为空就是存在 分页查询 用到了query接口的两个方法 setMaxResults(int) //设置获取多少条记录 和setFirstResult(int)//结果集开始的索引,索引默认从0开始 以上两个方法都返回Query对象所以可以组成方法链 query.setMaxResults(max).setFirstResult(index).getResultList() 批量操作(批量更新和批量删除) 建议将所有批量操作与不连续的事务隔离开, 批量操作可能造成受管实体与数据库的不一致 原生SQL查询与调用存储过程(EJB3.0不支持以OUT参数的形式返回的存储过程) Query query=entityManager.createNativeQuery(" {call pro_1(?)} "); query.setParameter(1,"jsun"); //无返回值存储过程 query.executeUpdate(); //返回单个值的存储过程 String result=(String)query.getSingleResult(); //返回全部列的存储过程 List<User> results=(List<User>)query.getResultList(); //返回部分列的存储过程 List<Object[]> results=(List<Object[]>)query.getResultList(); for(Object[] row:results){ row[0],row[1] }
发表评论
-
Hibernate one-to-many 属性设置
2012-03-26 16:49 1311使用Hibernate提供的one-to-many来实现 ... -
jpa 表生成器 GenerationType.TABLE.
2012-03-15 17:38 4421将当前主键的值单独保存到一个数据库的表中,主键的值每次都是从指 ... -
cannot simultaneously fetch multiple bags异常的解决
2012-03-15 16:18 2413原文来自于http://howsun.bl ... -
JPA 实现继承关系
2012-03-15 03:14 3374JPA支持继承关系,使开发者可以利用继承的思想建模。 ... -
EntityManager
2012-03-13 14:23 1221EntityManager ma ... -
EJB3 JPA JPQL 语句 查询 使用 函数 分页 子查询(2)
2012-03-03 16:50 1736关联(join) JPQL仍然支持和SQL中类似的 ... -
Struts2整合Spring、JPA
2012-02-27 09:46 1914一直觉得JPA很神秘,最近抽空看了下,下面贴出刚才做的St ... -
JAVA三大框架的各自作用
2011-11-25 00:04 3197一、Spring Spring是 ... -
使用SSH到底是为了快速开发,还是为了标准?
2011-11-25 00:00 2465使用SSH到底是为了快速开发,还是为了标准? 使用S ... -
Struts2、Spring、Hibernate 高效开发的最佳实践
2011-11-26 00:16 1264引言 SSH(Struts2+Spring+Hi ... -
hibernate 的createSQLQuery的几种用法
2011-11-08 08:06 1070使用SQLQuery 对原生SQL查询执 ... -
Hibernate执行sql语句
2011-11-08 08:06 1411Hibernate执行sql语句 : BasicServi ... -
Hibernate 插入,修改,删除,查询语句
2011-11-08 08:07 3659Hibernate 语法: Hiberna ... -
Hibernate查询语言(Query Language), 即HQL
2011-11-08 08:07 1233Hibernate装备了一种 ... -
Hibernate对集合排序
2011-11-09 21:18 1534Hibernate对集合中的元素支持两种排序方式: ... -
Hibernate hbm配置文件集合配置
2011-11-09 21:19 13221.Set映射: <set name ... -
hibernate c3p0配置
2011-11-14 08:56 1152<?xml version="1.0& ... -
集成struts2 spring hibernate,使用注解
2011-11-14 08:56 1506集 成struts,spring,hibernate时,对于 ... -
Hibernate 部分属性查询
2011-11-15 08:48 1282在hibernate中,用hql语句查询实体类,采 ...
相关推荐
Java Enterprise Edition (Java EE) 中的EJB 3.0引入了Java持久性查询语言(JPQL),这是一种专为访问和导航Java应用程序中的实体实例设计的语言。JPQL是对早期EJB QL的扩展和改进,它允许开发者以面向对象的方式来...
Java企业版(Java EE)中的EJB3.0引入了一种新的查询语言,即JPQL(Java Persistence Query Language)。JPQL是EJB2中EJB QL的扩展,旨在简化Java应用程序对持久化实体的访问和操作。本文将深入探讨JPQL的基本概念、...
**JPQL(Java Persistence Query Language)** 是EJB 3.0引入的一种查询语言,专门用于在对象/关系映射(ORM)框架如JPA(Java Persistence API)中进行数据查询。JPQL与SQL类似,但它是面向对象的,允许开发者以类...
EJB规范提供了一种强大的查询语言,即EJB查询语言(EJB-QL),它类似于SQL,用于检索和操作EJB实体bean的实例。EJB-QL允许开发者以面向对象的方式表达查询,从而在业务逻辑中更加灵活地处理数据。 **EJB-QL基础** ...
EJB 3.0引入了无状态会话bean、有状态会话bean、实体bean(与JPA结合使用)等,以及依赖注入和查询语言JPAQL,大大降低了学习曲线和开发成本。 JPA是Java EE中的对象关系映射(ORM)标准,它为Java开发者提供了一种...
基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起·使用这种语言编写的查询是可移植的,可以...
5. **查询语言(QL)**:EJB 2.0中的CMP支持Entity Bean Query Language (EJB QL),这是一种面向对象的查询语言,类似于SQL,但专为EJB设计。EJB QL允许开发者执行复杂的查询,获取和更新数据库中的数据。 6. **...
JPA与EJB查询语言(EJB QL) EJB 3.0 中的JPA提供了JPQL(Java Persistence Query Language),一种面向对象的查询语言,用于查询持久化实体。JPQL与SQL类似,但更专注于对象模型而不是关系模型。 ### 8. 测试与...
EJB3引入了JPQL(Java Persistence Query Language),一种面向对象的查询语言,允许开发者对数据库进行复杂的查询操作,类似于SQL但更为面向对象。 5. **依赖注入(Dependency Injection)** EJB3支持依赖注入...
3. **查询语言(JPA QL)**:除了基本的CRUD操作,还可以使用JPA的查询语言(JPQL)执行更复杂的SQL查询,如`SELECT e FROM EntityBean e WHERE e.property = :value`。 ### 四、EJB实体Bean的生命周期管理 EJB...
EJB还支持EJB查询语言(EJB QL)和Java Persistence Query Language(JPQL)进行数据查询。 ### 6. EJB的优势与挑战 EJB提供了强大的企业级功能,如事务管理、安全性、性能优化等,但同时也需要较高的学习曲线和...
5. **查询语言JPA QL**:EJB 3引入了JPQL(Java Persistence Query Language),一种面向对象的查询语言,类似于SQL但用于操作对象和实体。 ### 三、EJB 3的组件类型 1. **实体Bean(Entity Beans)**:代表数据库...
5. **查询语言JPA QL**:EJB 3.0提供了JPQL(Java Persistence Query Language),类似于SQL,用于查询持久化实体。 教程可能涵盖以下内容: 1. **环境搭建**:包括下载和安装JBoss服务器,配置开发环境,如JDK和...
7. **查询语言JPA QL**:EJB3.0提供了JPQL(Java Persistence Query Language),这是一种面向对象的查询语言,类似于SQL,但用于检索和操作持久化对象。 8. **异步方法**:EJB3.0允许定义异步方法,通过`@...
- **查询语言**: EJB 3.0 引入了 EJB-QL 和 JPA 的 JPQL,支持更为丰富的查询表达式,包括 JOIN、GROUP BY、HAVING 等 SQL 特性。 **5. 拦截器** - **拦截器**: EJB 3.0 支持在方法调用前后执行拦截器,用于处理...
5. **查询语言JPA QL**:EJB 3.0引入了JPQL(Java Persistence Query Language),它是SQL的面向对象版本,允许开发者以面向对象的方式执行数据库查询。 6. **无状态会话bean和有状态会话bean**:`@Stateless` bean...
6. **查询语言JPA QL**:EJB 3.0引入了JPQL(Java Persistence Query Language),这是一种面向对象的查询语言,用于检索和操作持久化实体。`@NamedQuery`和`@NamedNativeQuery`注解允许开发者预定义查询,提高了...
- **查询语言**:CMP通常使用EJB QL(Entity Bean Query Language),而JPA(Java Persistence API)引入了更强大的JPQL。 **4. Time Service** Java EE提供定时服务(Timer Service),允许EJB在预设的时间执行...