分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
1.自定义Repository方法接口,让接口的实现类来继承这个中间接口而不是Repository接口
package com.data.jpa.dao;import java.io.Serializable;import java.util.List;import java.util.Map;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.repository.NoRepositoryBean;/** * 自定义Repository的方法接口 * @author xiaowen * @param <T> 领域对象即实体类 * @param <ID>领域对象的注解 */@NoRepositoryBeanpublic interface CustomRepository <T, ID extends Serializable> extends JpaRepository<T, ID> { /** * 保存对象<br/> * 注意:如果对象id是字符串,并且没有赋值,该方法将自动设置为uuid值 * @param item * 持久对象,或者对象集合 * @throws Exception */ public void store(Object... item); /** * 更新对象数据 * * @param item * 持久对象,或者对象集合 * @throws Exception */ public void update(Object... item); /** * 执行ql语句 * @param qlString 基于jpa标准的ql语句 * @param values ql中的?参数值,单个参数值或者多个参数值 * @return 返回执行后受影响的数据个数 */ public int executeUpdate(String qlString, Object... values); /** * 执行ql语句 * @param qlString 基于jpa标准的ql语句 * @param params key表示ql中参数变量名,value表示该参数变量值 * @return 返回执行后受影响的数据个数 */ public int executeUpdate(String qlString, Map<String, Object> params); /** * 执行ql语句,可以是更新或者删除操作 * @param qlString 基于jpa标准的ql语句 * @param values ql中的?参数值 * @return 返回执行后受影响的数据个数 * @throws Exception */ public int executeUpdate(String qlString, List<Object> values); /***还可以定义分页相关方法,此处暂不支持**/}
2.自定义repository的方法接口实现类,作为Repository代理的自定义类来执行,该类主要提供自定义的公用方法
package com.data.jpa.dao.impl;import java.io.Serializable;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.List;import java.util.Map;import javax.persistence.EntityManager;import javax.persistence.Id;import javax.persistence.Query;import org.apache.log4j.Logger;import org.springframework.data.jpa.repository.support.SimpleJpaRepository;import com.data.jpa.dao.CustomRepository;import com.data.jpa.util.ReflectHelper;import com.data.jpa.util.UUIDUtil;/** * 自定义repository的方法接口实现类,该类主要提供自定义的公用方法 * * @author xiaowen * @date 2016年5月30日 @ version 1.0 * @param <T> *