启用 JpaRepositories

package cn.xiaojf;

import cn.xiaojf.today.data.rdb.repository.RdbCommonRepositoryImpl;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.vendor.HibernateJpaSessionFactoryBean; @SpringBootApplication
@EnableJpaRepositories(repositoryBaseClass = RdbCommonRepositoryImpl.class)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
自定义 repository 接口
package cn.xiaojf.today.data.rdb.repository;

import cn.xiaojf.today.base.model.PageInfo;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository; import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map; /**
* 自定义 repository 接口
* @author xiaojf 2016/12/8 19:31.
*/
@NoRepositoryBean
public interface RdbCommonRepository<T, ID extends Serializable> extends CrudRepository<T, ID> { }
自定义 repository 接口实现类
package cn.xiaojf.today.data.rdb.repository;

import cn.xiaojf.today.base.exception.BusinessException;
import cn.xiaojf.today.base.model.PageInfo;
import cn.xiaojf.today.base.util.BeanToMapUtil;
import cn.xiaojf.today.base.util.CamelCaseUtil;
import cn.xiaojf.today.base.util.SpringBeanUtil;
import cn.xiaojf.today.data.rdb.util.EntityUtil;
import cn.xiaojf.today.data.rdb.util.QueryDynamicLoader;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.data.jpa.repository.support.JpaEntityInformation;
import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
import org.springframework.util.Assert; import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.io.StringWriter;
import java.math.BigInteger;
import java.util.*; /**
* 自定义关系数据库repository
* @author xiaojf 2016/12/8 19:35
*/
public class RdbCommonRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRepository<T,ID> implements RdbCommonRepository<T,ID> {
private final EntityManager entityManager;
private final JpaEntityInformation entityInformation;
private final Class<T> clazz; public RdbCommonRepositoryImpl(JpaEntityInformation<T, ?> entityInformation, EntityManager entityManager) {
super(entityInformation, entityManager);
this.entityManager = entityManager;
this.entityInformation = entityInformation;
this.clazz = entityInformation.getJavaType();
}
}

在继承了 RdbCommonRepository 接口后, springboot会自动的在相同目录寻找他的实现类,规则是RdbCommonRepository+Impl 类命名规则,也可以手动指定,此处不做多解释,可以自行百度,一般不需要自行指定,使用方式如下

package cn.xiaojf.today.sys.repository;

import cn.xiaojf.today.data.rdb.repository.RdbCommonRepository;
import cn.xiaojf.today.sys.entity.SysUser; /**
* 用户 repository
* @author xiaojf 2016/12/8 19:46.
*/
public interface SysUserRepository extends RdbCommonRepository<SysUser,String> {
SysUser findFirstByUsername(String username);
}

springboot 自定义Repository的更多相关文章

  1. springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用

    springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用 原文链接:https://www.cnblogs.com/blog5277/p/10661 ...

  2. Spring Data JPA: 实现自定义Repository

    一.前言 由于项目中的 实体(entity)默认都是继承一个父类(包含一些公共的属性,比如创建时间,修改时间,是否删除,主键id).为了实现逻辑删除,一般会自己实现RepositoryFactoryB ...

  3. SpringBoot自定义拦截器实现IP白名单功能

    SpringBoot自定义拦截器实现IP白名单功能 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8993331.html 首先,相关功能已经上线了,且先让我先 ...

  4. SpringBoot自定义错误信息,SpringBoot适配Ajax请求

    SpringBoot自定义错误信息,SpringBoot自定义异常处理类, SpringBoot异常结果处理适配页面及Ajax请求, SpringBoot适配Ajax请求 ============== ...

  5. SpringBoot自定义错误页面,SpringBoot 404、500错误提示页面

    SpringBoot自定义错误页面,SpringBoot 404.500错误提示页面 SpringBoot 4xx.html.5xx.html错误提示页面 ====================== ...

  6. springboot自定义错误页面

    springboot自定义错误页面 1.加入配置: @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { re ...

  7. SpringBoot自定义Filter

    SpringBoot自定义Filter SpringBoot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,当然我们可以自定 义F ...

  8. springboot 自定义LocaleResolver切换语言

    springboot 自定义LocaleResolver切换语言 我们在做项目的时候,往往有很多项目需要根据用户的需要来切换不同的语言,使用国际化就可以轻松解决. 我们可以自定义springboor中 ...

  9. SpringMVC拦截器与SpringBoot自定义拦截器

    首先我们先回顾一下传统拦截器的写法: 第一步创建一个类实现HandlerInterceptor接口,重写接口的方法. 第二步在XML中进行如下配置,就可以实现自定义拦截器了 SpringBoot实现自 ...

随机推荐

  1. mysql 免安装版 + sqlyog 安装 步骤 --- 发的有点晚

    总有些朋友不会安装mysql,其实软件安装不是学习mysql的重点,基本上也就安装一次,工作后一般公司里也不会让你安装,如果非要安装,百度一下就行了.安装版本百度上有许多,下面就提供一个免安装版的步骤 ...

  2. 极化SAR图像基础知识(1)

    从今天开始学习极化SAR图像,记录于此. 极化散射矩阵S是用来表示单个像素散射特性的一种简便办法,它包含了目标的全部极化信息.

  3. 跟着刚哥梳理java知识点——枚举和注解(十四)

    enum Season{ SPRING("spring","春暖花开"), SUMMER("summer","夏日炎炎" ...

  4. Nginx配置同一个域名同时支持http与https两种方式访问

    Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen 80;listen 443 ssl;ssl on;server_name 域名;in ...

  5. nodeName,nodeValue,nodeType,typeof 的区别

        nodeName 属性含有某个节点的名称.  元素节点的 nodeName 是标签名称  属性节点的 nodeName 是属性名称  文本节点的 nodeName 永远是 #text  文档节 ...

  6. 2017-4-18 ADO.NET

    1.什么是ADO.NET?     (是一种数据库访问技术) ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问 ...

  7. 【原】Unity Shader VS UDK Material Editor

    UDK 的材质编辑器十分好用,毕竟是所见即所得的.虽然unity也有类似第三方插件,但易用性还是差很多,下面主要是,把一些常见表达式概念对应起来. 1. UDK CameraVector (相机位向量 ...

  8. 2017百度web前端实习生在线笔试题

    代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s ...

  9. undo表空间

    undo表空间undo表空间的管理,主要包括创建.删除.修改.切换.其中需要注意的是不能在undo表空间创建数据库对象,还有就是只能是单文件或大文件表空间. 创建创建主要有两种方法,一种是在创建数据库 ...

  10. 微信公众号、H5、APP三者各有什么优势?

    昨天给大家分享了一个现在很热的H5,众所周知,当下H5手机网站.微信公众号.APP这三种载体都越来越火了,而且三者都有各自的一些优势和劣势. HTML5(H5) H5之所以能引发如此广泛的效应,根本在 ...