- 浏览: 3422342 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
http://www.cnblogs.com/luxh/archive/2012/06/01/2531428.html
JPA的命名查询实际上就是给查询语句起个名字,执行查询的时候就是直接使用起的这个名字,避免重复写JPQL语句,使查询在代码中得到更多的重用。我不怎么喜欢使用命名查询,因为我不想把查询语句写在实体中,使得实体看起来变得复杂臃肿。
1、使用@NamedQuery注解在实体类中定义命名查询。
@NamedQuery(name="findAllUser",query="SELECT u FROM User u")
@NamedQuery中的属性name指定命名查询的名称,query属性指定命名查询的语句。
如果要定义多个命名查询,需要使用@NamedQueries。
@NamedQueries({
@NamedQuery(name="findAllUser",query="SELECT u FROM User u"),
@NamedQuery(name="findUserWithId",query="SELECT u FROM User u WHERE u.id = ?1"),
@NamedQuery(name="findUserWithName",query="SELECT u FROM User u WHERE u.name = :name")
})
2、定义好命名查询后,可以使用EntityManager的createNamedQuery方法传入命名查询的名称创建查询。例如:createNamedQuery("findAllUser");
3、一个简单的例子。
简单的User实体:
Hibernate简单测试
JPA简单的测试:
JPA的命名查询实际上就是给查询语句起个名字,执行查询的时候就是直接使用起的这个名字,避免重复写JPQL语句,使查询在代码中得到更多的重用。我不怎么喜欢使用命名查询,因为我不想把查询语句写在实体中,使得实体看起来变得复杂臃肿。
1、使用@NamedQuery注解在实体类中定义命名查询。
@NamedQuery(name="findAllUser",query="SELECT u FROM User u")
@NamedQuery中的属性name指定命名查询的名称,query属性指定命名查询的语句。
如果要定义多个命名查询,需要使用@NamedQueries。
@NamedQueries({
@NamedQuery(name="findAllUser",query="SELECT u FROM User u"),
@NamedQuery(name="findUserWithId",query="SELECT u FROM User u WHERE u.id = ?1"),
@NamedQuery(name="findUserWithName",query="SELECT u FROM User u WHERE u.name = :name")
})
2、定义好命名查询后,可以使用EntityManager的createNamedQuery方法传入命名查询的名称创建查询。例如:createNamedQuery("findAllUser");
3、一个简单的例子。
简单的User实体:
package com.cndatacom.jpa.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; @Entity @Table(name="t_user") @NamedQueries({ @NamedQuery(name="findAllUser",query="SELECT u FROM User u"), @NamedQuery(name="findUserWithId",query="SELECT u FROM User u WHERE u.id = ?1"), @NamedQuery(name="findUserWithName",query="SELECT u FROM User u WHERE u.name = :name") }) public class User { /** * 主键 */ @Id @GeneratedValue private Long id; /** * 名字 */ @Column(name="name") private String name; /** * 密码 */ @Column(name="password") private String password; ... ... }
Hibernate简单测试
public void testFindByNamedQuery() { HashMap<String, Object> queryParams = new HashMap<String, Object>(); queryParams.put("name", Constants.USER_ROLE); List<User> roles = dao.findByNamedQuery("findAllUser", queryParams); }
JPA简单的测试:
package com.cndatacom.jpa.test; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.persistence.Query; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.cndatacom.jpa.entity.User; public class TestNamedQuery { EntityManagerFactory emf = null; @Before public void before() { //根据在persistence.xml中配置的persistence-unit name 创建EntityManagerFactory emf = Persistence.createEntityManagerFactory("myJPA"); } @After public void after() { //关闭EntityManagerFactory if(null != emf) { emf.close(); } } @Test public void testNamedQuery1() { EntityManager em = emf.createEntityManager(); List<User> users = em.createNamedQuery("findAllUser").getResultList();//根据User实体中定义的命名查询 } @Test public void testNamedQuery2() { EntityManager em = emf.createEntityManager(); Query query = em.createNamedQuery("findUserWithId");//根据User实体中定义的命名查询 query.setParameter(1, 2L); List<User> users = query.getResultList(); } @Test public void testNamedQuery3() { EntityManager em = emf.createEntityManager(); Query query = em.createNamedQuery("findUserWithName");//根据User实体中定义的命名查询 query.setParameter("name", "李坏"); List<User> users = query.getResultList(); } }
发表评论
-
spring配置事物的方式:注解和aop配置
2016-05-14 00:26 4102参考: Spring AOP中pointcut express ... -
写个mybatis的拦截插件,实现将所有执行的sql写入文件里
2016-05-12 15:59 5104原文 http://3131854.blog.51cto.co ... -
Mybatis分库分表扩展插件
2016-05-12 15:47 1620http://fangjialong.iteye.com/bl ... -
spring+mybatis+atomikos 实现JTA事务
2016-05-11 22:00 5522sping配置多个数据源 不同用户操作不同数据库 http:/ ... -
ibatis扩展支持主键生成的方法(非数据库方式)
2016-04-13 22:01 976http://blog.csdn.net/warison200 ... -
ibatis 动态 Mapped Statement
2016-03-31 17:02 855http://www.cnblogs.com/lcngu/p/ ... -
分布式事务管理
2016-03-31 16:43 1039http://my.oschina.net/pingpangk ... -
ibatis中动态查询表返回用resultClass="java.util.HashMap" 的问题
2016-03-11 10:49 1124http://blog.csdn.net/dyllove98/ ... -
Mybatis传多个参数(三种解决方案)
2016-03-07 17:46 1445http://my.oschina.net/ydsakyclg ... -
mybatis --mapper配置文件中大于小于怎么处理
2016-03-04 14:21 2405http://blog.csdn.net/nich002/ar ... -
Mybatis 数据库物理分页插件 PageHelper
2015-11-28 01:09 2791http://www.cnblogs.com/digdeep/ ... -
Druid 的SQL翻译功能如何使用
2015-11-27 21:40 1976Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接 ... -
[MyBatis]mapperLocations属性通配符的使用
2015-11-26 10:49 6219http://blog.csdn.net/szwangdf/a ... -
Hibernate Validation使用示例及讲解
2015-11-22 21:06 2752http://wdmcygah.iteye.com/blog/ ... -
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
2015-11-17 17:54 20171http://blog.csdn.net/weibing_hu ... -
SpringMVC + Mybatis + Shiro 权限整合
2015-11-14 14:06 8746详细见参考文章: 基于Spring + Spring MVC ... -
MyBatis3 的Mapper XML 文件详解
2015-11-13 11:54 1357MyBatis3 的Mapper XML 文件http://m ... -
HibernateDao.java
2015-11-10 15:55 1162http://my.oschina.net/lizy/blog ... -
Hibernate envers开发指南
2015-10-24 00:44 1234http://www.blogjava.net/xmatthe ... -
Spring+Ibatis数据库水平分库
2015-09-13 21:15 1297Spring+Ibatis数据库水平分库 http://blo ...
相关推荐
**JPQL(Java Persistence Query Language)**是JPA的一部分,它是面向对象的查询语言,类似于SQL,但专门用于处理JPA实体。JPQL允许开发者用面向对象的方式来构建查询,而不是直接写SQL,这使得代码更易于理解和...
命名查询是一种预定义的JPQL查询,可以在实体bean上通过`@NamedQuery`或`@NamedQueries`注解来声明。这样做可以提高代码的可读性和可维护性,特别是对于经常使用的查询。例如: ```java @NamedQuery(name = ...
7. **命名查询和查询注解**:介绍预定义的命名查询,以及在实体类上使用@NamedQuery和@Query注解的方式,提高代码的可读性和维护性。 8. **案例实战**:结合实际项目,演示如何在Java代码中执行JPQL语句,以及如何...
JPQL(Java Persistence Query Language)是 JPA 中的一种查询语言,用于书写面向对象的查询语句。JPQL 查询可以用于检索、更新和删除数据。例如,在上面的示例代码中,我们使用了 JPQL 查询来检索 Person 实体: `...
Java Persistence Query Language(JPQL)是JPA提供的面向对象的查询语言,类似于SQL但更专注于对象模型。通过JPQL,开发者可以对实体进行检索、更新和删除操作。例如,查询所有用户可以写成:"SELECT u FROM User ...
命名查询是预定义的JPQL查询,可以在实体类上通过`@NamedQuery`或`@NamedQueries`注解声明,这有助于减少重复代码和提高代码的可读性。例如: ```java @Entity @NamedQuery(name="getPerson", query="FROM Person ...
接着,我们来看`@NamedQueries`和`@NamedQuery`这两个注解,它们是关于JPA的命名查询功能。命名查询允许我们在实体类中定义预编译的JPQL(Java Persistence Query Language)查询语句,以提高查询的可重用性和可维护...
- `@NamedQuery`, `@NamedNativeQuery`:预定义SQL或JPQL查询。 - `@SqlResultSetMapping`:定义SQL查询结果集的映射。 7. **其他**: - `@DiscriminatorColumn` 和 `@DiscriminatorValue`:用于多态继承时,...
查询方法支持多种策略,包括自动查询生成、使用 `@NamedQuery`、`@Query` 注解编写自定义 JPQL 查询,以及使用参数绑定和 SpEL 表达式。 3.4. **存储过程** Spring Data JPA 也支持调用数据库存储过程,通过 `@...
5. **查询操作**:使用JPQL或Criteria API进行查询,或者使用`@NamedQuery`预定义查询。 **JPA的优缺点**: 优点: 1. 提供了一种统一的API,减少了与特定数据库的耦合。 2. 支持面向对象的编程模型,易于理解和...
此外,`@NamedQuery`和`@NamedNativeQuery`可以定义预编译的查询,提高性能。 事务管理是Spring Data JPA的另一大优势。通过配置`@Transactional`注解,可以很容易地在方法级别控制事务的开始、提交或回滚。这使得...
这通常通过@NamedQuery或@Query注解在Repository接口中实现。 首先,我们需要定义一个实体类,这个实体类可能包含多个表的数据。例如,假设我们有两个相关的表`User`和`Address`,我们可以创建一个`UserProfile`类...
2. **查询语言**:Hibernate支持JPQL(Java Persistence Query Language),一种面向对象的查询语言,类似于SQL但更加面向对象。例如,@NamedQuery和@NamedNativeQuery用于定义预编译的查询。 3. **事务管理**:...
6. JPQL(Java Persistence Query Language):这是JPA的查询语言,类似于SQL,但更面向对象。它允许开发者以声明式的方式执行查询。 7. NamedQuery:预定义的JPQL查询,可以在实体类上用@NamedQuery注解声明,方便...
JPA的核心组件包括实体(Entity)、实体管理器(EntityManager)、实体管理工厂(EntityManagerFactory)和查询语言(JPQL)。实体是JPA中的核心概念,代表数据库表的一行记录。通过`@Entity`注解标记类为实体,`@...
- **查询语言(JPQL, Java Persistence Query Language)**: 类似于SQL,用于查询实体对象。 **3. JPA使用入门_基础** 入门教程通常包括以下内容: - **环境配置**: 如设置persistence.xml文件,配置数据源、实体...
- 使用预编译查询(NamedQuery或Criteria API)提高性能。 - 注意实体的生命周期管理,避免内存泄漏。 总结来说,“Hibernate-JPA”是Java开发中一个强大且易用的数据持久化工具,通过遵循JPA规范,它为开发者提供...
Renato Ferreira-软件工程师 ...@NamedQuery:使用预定义参数的静态JPQL查询 使用条件的动态查询 条件查询 CriteriaBuilder 执照 根据MIT许可证分发。 有关更多信息,请参见LICENSE 。 接触 Renato Ferreira- - :
JPA引入了JPQL(Java Persistence Query Language),一种面向对象的查询语言,类似于SQL,但针对对象模型。开发者可以用JPQL编写复杂的查询,包括SELECT、FROM、WHERE、JOIN等子句。此外,还有@NamedQuery和@...