- 浏览: 196149 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
gdpglc:
2222222222222222222222222222222 ...
JAVA日期格式输出月份前面不想被自动补0 -
hesai_vip:
JPA SPRING 泛型DAO -
gdpglc:
public static String getTime_ ...
JAVA日期格式输出月份前面不想被自动补0 -
junzilan0929cn:
学习了.
EJB 3 初次学习小结 -
xiaowur:
写的很详细...
对我很有帮助
EJB 3 初次学习小结
package com.core.support.springSupportDao; import java.io.Serializable; import java.util.List; /** * 此泛型DAO来自easyjweb * 泛型DAO接口 */ public interface GenericDAO<T> { /** * 根据Id查找一个类型为T的对象。 * * @param id * 传入的ID的值 * @return 一个类型为T的对象 */ T get(Serializable id); /** * 持久化一个对象,该对象类型为T。 * * @param newInstance * 需要持久化的对象,使用JPA标注。 */ <T>T save(T newInstance); /** * 根据对象id删除一个对象,该对象类型为T * * @param id * 需要删除的对象的id。 */ void delete(Serializable id); /** * 更新一个对象,主要用于更新一个在persistenceContext之外的一个对象。 * * @param transientObject * 需要更新的对象,该对象不需要在persistenceContext中。 */ void update(T transientObject); /** * 根据对象的一个属性名和该属性名对应的值来查找一个对象。 * * @param propertyName * 属性名 * @param value * 属性名对应的值 * @return 一个对象,如果在该属性名和值的条件下找到多个对象,则抛出一个IllegalStateException异常 */ T getBy(String propertyName, Object value); /** * 根据一个查询条件及其参数,还有开始查找的位置和查找的个数来查找任意类型的对象。 * * @param queryName * 命名查询的名字 * @param params * 查询条件中的参数的值。使用Object数组,要求顺序和查询条件中的参数位置一致。 * @param begin * 开始查询的位置 * @param max * 需要查询的对象的个数 * @return 一个任意对象的List对象,如果没有查到任何数据,返回一个空的List对象。 */ List executeNamedQuery(final String queryName, final Object[] params, final int begin, final int max); /** * 根据一个查询条件及其参数,还有开始查找的位置和查找的个数来查找类型为T的对象。 * * @param query * 查询的条件,使用位置参数,对象名统一为obj,查询条件从where后开始。比如:obj.name = * ?1 and obj.properties = ?2 * @param params * 查询条件中的参数的值。使用Object数组,要求顺序和查询条件中的参数位置一致。 * @param begin * 开始查询的位置 * @param max * 需要查询的对象的个数 * @return 一个该类型对象的List对象,如果没有查到任何数据,返回一个空的List对象。 */ List<T> find(String query, Object[] params, int begin, int max); /** * 根据一个查询条件及其参数,还有开始查找的位置和查找的个数来查找任意类型的对象。 * * @param query * 完整的查询语句,使用位置参数。比如:select user from User * user where user.name = ?1 and * user.properties = ?2 * @param params * 查询条件中的参数的值。使用Object数组,要求顺序和查询条件中的参数位置一致。 * @param begin * 开始查询的位置 * @param max * 需要查询的对象的个数 * @return 一个任意对象的List对象,如果没有查到任何数据,返回一个空的List对象。 */ List query(String query, Object[] params, int begin, int max); /** * 根据jpql语句执行批量数据更新等操作 * * @param jpql * 需要执行jpql语句 * @param params * 语句中附带的参数 * @return */ int batchUpdate(String jpql, Object[] params); /** * 执行SQL语句查询 * * @param nnq * @return */ public List executeNativeNamedQuery(String nnq); List executeNativeQuery(final String nnq, final Object[] params, final int begin, final int max); /** * 执行SQL语句 * * @param nnq * @return */ public int executeNativeSQL(final String nnq); /** * flush() */ public void flush(); }
package com.core.support.springSupportDao; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceException; import javax.persistence.Query; import org.springframework.orm.jpa.JpaCallback; import org.springframework.orm.jpa.support.JpaDaoSupport; import com.core.openstarbbsexception.JPAMothodParameterException; import com.core.support.springSupportDao.GenericDAO; public class GenericDAOImpl<T> extends JpaDaoSupport implements GenericDAO<T> { private Class<T> clazz; public GenericDAOImpl(Class<T> clazz) { this.clazz = clazz; } /* * public void setClazz(Class<T> clazz) { this.clazz = clazz; } public * Class<T> getClazz() { return clazz; } */ public T get(Serializable id) { if (id == null) return null; return this.getJpaTemplate().find(clazz,id); } public List<T> find(final String queryStr, final Object[] params, final int begin, final int max) { // TODO Auto-generated method stub List<T> ret = (List<T>) this.getJpaTemplate().execute( new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { // TODO Auto-generated method stub String clazzName = clazz.getName(); StringBuffer sb = new StringBuffer("select obj from "); sb.append(clazzName).append(" obj").append(" where ") .append(queryStr); Query query = em.createQuery(sb.toString()); int parameterIndex = 1; if (params != null && params.length > 0) { for (Object obj : params) { query.setParameter(parameterIndex++, obj); } } if (begin >= 0 && max > 0) { query.setFirstResult(begin); query.setMaxResults(max); } if (begin >= 0 && max > 0) { query.setFirstResult(begin); query.setMaxResults(max); } return query.getResultList(); } }); if (ret != null && ret.size() >= 0) { return ret; } else { return new ArrayList<T>(); } } public List query(final String queryStr, final Object[] params, final int begin, final int max) { // TODO Auto-generated method stub List ret = (List) this.getJpaTemplate().execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { // TODO Auto-generated method stub Query query = em.createQuery(queryStr); int parameterIndex = 1; if (params != null && params.length > 0) { for (Object obj : params) { query.setParameter(parameterIndex++, obj); } } if (begin >= 0 && max > 0) { query.setFirstResult(begin); query.setMaxResults(max); } /* * if (begin >= 0 && max > 0) { query.setFirstResult(begin); * query.setMaxResults(max); } */ return query.getResultList(); } }); if (ret != null && ret.size() >= 0) { return ret; } else { return new ArrayList(); } } public void delete(Serializable id){ if (id == null) try { throw new JPAMothodParameterException(); } catch (JPAMothodParameterException e1) { e1.printStackTrace(); } T object = this.get(id); if (object != null) { try { this.getJpaTemplate().remove(object); } catch (Exception e) { e.printStackTrace(); } } } public <T> T save(T instance) { // TODO Auto-generated method stub this.getJpaTemplate().persist(instance); return instance; } public T getBy(final String propertyName, final Object value) { if (propertyName == null || "".equals(propertyName) || value == null) try { throw new JPAMothodParameterException(); } catch (JPAMothodParameterException e) { e.printStackTrace(); } // TODO Auto-generated method stub List<T> ret = (List<T>) this.getJpaTemplate().execute( new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { // TODO Auto-generated method stub String clazzName = clazz.getName(); StringBuffer sb = new StringBuffer("select obj from "); sb.append(clazzName).append(" obj"); Query query = null; if (propertyName != null && value != null) { sb.append(" where obj.").append(propertyName) .append(" = :value"); query = em.createQuery(sb.toString()).setParameter( "value", value); } else { query = em.createQuery(sb.toString()); } return query.getResultList(); } }); if (ret != null && ret.size() == 1) { return ret.get(0); } else if (ret != null && ret.size() > 1) { throw new java.lang.IllegalStateException( "worning --more than one object find!!"); } else { return null; } } public List executeNamedQuery(final String queryName, final Object[] params, final int begin, final int max) { List ret = (List) this.getJpaTemplate().execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { Query query = em.createNamedQuery(queryName); int parameterIndex = 1; if (params != null && params.length > 0) { for (Object obj : params) { query.setParameter(parameterIndex++, obj); } } if (begin >= 0 && max > 0) { query.setFirstResult(begin); query.setMaxResults(max); } return query.getResultList(); } }); if (ret != null && ret.size() >= 0) { return ret; } else { return new ArrayList(); } } public void update(T instance) { // TODO Auto-generated method stub this.getJpaTemplate().merge(instance); } public void setClazzType(Class clazz) { this.clazz = clazz; } public Class getClassType() { return this.clazz; } public List executeNativeNamedQuery(final String nnq) { Object ret = this.getJpaTemplate().execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { Query query = em.createNativeQuery(nnq); return query.getResultList(); } }); return (List) ret; } public List executeNativeQuery(final String nnq, final Object[] params, final int begin, final int max) { List ret = (List) this.getJpaTemplate().execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { Query query = em.createNativeQuery(nnq); int parameterIndex = 1; if (params != null && params.length > 0) { for (Object obj : params) { query.setParameter(parameterIndex++, obj); } } if (begin >= 0 && max > 0) { query.setFirstResult(begin); query.setMaxResults(max); } return query.getResultList(); } }); if (ret != null && ret.size() >= 0) { return ret; } else { return new ArrayList(); } } public int executeNativeSQL(final String nnq) { Object ret = this.getJpaTemplate().execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { Query query = em.createNativeQuery(nnq); return query.executeUpdate(); } }); return (Integer) ret; } public int batchUpdate(final String jpql, final Object[] params) { Object ret = this.getJpaTemplate().execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { Query query = em.createQuery(jpql); int parameterIndex = 1; if (params != null && params.length > 0) { for (Object obj : params) { query.setParameter(parameterIndex++, obj); } } return query.executeUpdate(); } }); return (Integer) ret; } public void flush() { this.getJpaTemplate().execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { em.getTransaction().commit(); return null; } }); } }
package com.core.openstarbbsexception; /** * OpenStarBBS自定义异常。 * @author treblesoftware * */ public class JPAMothodParameterException extends Exception { public JPAMothodParameterException(){ super("JPA ORM SUPPORT EXCEPTION:com.core.support.dao.GenericDAOImpl 方法参数为NULL。错误"?); } }
评论
3 楼
hesai_vip
2013-05-31
2 楼
treblesoftware
2010-04-16
sky3380 写道
楼主用过吗,Spring2.5的JPA是没法用泛型的
不好意思,版本忘记了,很久以前的事情了。不过我跑起来的。
1 楼
sky3380
2010-04-16
楼主用过吗,Spring2.5的JPA是没法用泛型的
发表评论
-
JPA 映射实体生命周期
2009-11-27 20:56 1599JPA 实体生命周期分为4种状态,其实跟HIBERNATE的 ... -
关于JBOSS数据源配置 <use-java-context>false</use-java-context>的问题
2009-11-27 16:16 5769其实这个问题可以归跟到只是一个JNDI查找时名字的问题。但是作 ... -
JBOSS 5 连接池配置
2009-11-27 08:37 2775JBOSS 5与其它版本的JBOSS 连接池配置还是有很大不同 ... -
JPA 泛型DAO 封装(源码来自EasyJWeb)
2009-11-27 08:00 5701对于在Web容器中使用Enti ... -
JPA EntityManager 详解
2009-11-27 07:56 15196持久化上下文(Persistence Contexts)的相关 ... -
EJB 3 初次学习小结
2009-11-26 20:27 2273从昨天到今天晚上,从 ... -
EJB3.0 注解列表
2009-11-26 09:14 1069会话BEAN与消息驱动BEAN。 1,会话BEAN。 有状 ...
相关推荐
通过将公共通用操作写进父类简化代码,提高代码的复用。 面向接口 使用继承 泛型 引入JPA API查询 以及 元数据 提高代码的安全性.
对数据库的操作无非就“增删改查”。就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写...Spring-data-jpa的出现正可以让这样一个已经很“薄”的数据访问层变成只是一层接口的编写方式。
spring struts2 JPAspring struts2 JPAspring struts2 JPAspring struts2 JPA
自定义通用DAO实现基本的CRUD,比如: public interface BaseDao<T> { int insert(T obj) throws Exception; int update(T obj) throws Exception; int deleteByPrimaryKey(Object key) throws Exception; int ...
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
struts jpa spring 整合 源代码
目录 企业级应用的特点 JPA及JPA使用技巧 使用泛型DAO来简化DAO层的开发 IOC容器、AOP及Spring2 EasyJWeb如何实现快速开发 小结
本文档详细介绍了Spring data JPA的概念、Spring Data JPA能够做什么,Services和 Repositories的对比以及各种Repositories的使用方法。
#boot-jpa-security-dmdb-freemark spring boot spring security 达梦数据库 ftl assembly 打包
Spring Boot 集成 JPASpring Boot 集成 JPASpring Boot 集成 JPASpring Boot 集成 JPASpring Boot 集成 JPASpring Boot 集成 JPA
jpa整合spring的demo,使用hibernate作为jpa的实现orm框架。
spring data jpa 实例源码 spring data jpa 实例源码 spring data jpa 实例源码
spring data jpa 的Specifications动态查询 单条件查询 多条件查询 分页查询
2017 spring data jpa+spring4.2+springmvc+hibernate4.3 maven环境intellij idea增删改查实例
spring注解完整版+spring data jpa官方文档中文翻译+JPA2.0官方文档 文档内容齐全 值得参考学习
spring3.1+hibernate4+jpa框架集成Dao部分,并且已经写好测试类,dao已经封装完毕,已经配置好事务。dao采用泛型。
使用Spring MVC3.0+Spring+Spring data JPA 参照springside的一个小Demo
Spring Data JPA中文文档1.4.3
eladmin jpa版本:前端源码,项目基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 Spring Security、Redis、Vue的前后端分离后台管理系统.zip