springboot 自定义Repository

启用 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);
}
时间: 2024-08-05 22:50:02

springboot 自定义Repository的相关文章

SpringBoot自定义Filter

SpringBoot自定义Filter SpringBoot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,当然我们可以自定 义Filter. 自定义Filter需要两个步骤: 实现Filter[javax.servlet.Filter]接口,实现Filter方法 添加 @Configuration 注解,将自定义Filter加入过滤链 [过滤打印请求URL]实例代码如下: package xatu.zsl.Filter; i

springboot自定义错误页面

springboot自定义错误页面 1.加入配置: @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return (container -> { ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html"); ErrorPage error404Page = new ErrorPage(Http

SpringBoot自定义配置项

SpringBoot自定义配置项 Spring Boot内置的配置项远远不能支撑我们的程序运行,在项目设计的时候,往往因为扩展性的需要,项目需要预留很多自定义设置项,Spring Boot允许我们配置自定义选项. 学习视频: http://www.itlaoqi.com/chapter/1685.html 源码地址: QQ群 814077650 , 群共享中自助下载 老齐的官网: itlaoqi.com (更多干货就在其中) 在 Spring Boot中,有两种方式使用自定义选项 @Value

Spring Boot下如何自定义Repository中的DAO方法

环境配置介绍 jdk 1.8, spring Boot 1.5.3.RELEASE, MySQL, Spring Data, JPA 问题描述 Spring Data提供了一套简单易用的DAO层抽象与封装,覆盖的CURD的基本功能,但是在诸多的情况下,需要用户自定义DAO的实现方法,来实现更为复杂和精细的数据库访问操作,该如何来解决这个问题? 目标描述 这里我们以自定义testAA的方法为例,来介绍如何实现自定义的DAO方法扩展. 数据库表的定义 我们这里定义了一个非常简单的mycity表,来作

springboot自定义配置文件

前言:如果你一点spring的基础没有,建议你不要学习springboot,至少先有一个spring的项目经验或者自己搭建过spring的项目再学习springboot,这样你会发现在spring中搞不懂的,在springboot中得到一些答案.springboot的原则是"约定大于配置",所以在使用springboot的时候如果出现问题,没有一点基础,解决问题就很困难. 目标:将spring的容器中的配置:数据库的配置,定时器的配置转换到springboot中,实现spring与sp

微服务之springboot 自定义配置(一)Application.properties文件

配置的文件的格式 springboot可以识别两种格式的配置文件,分别是yml和properties 文件.我们可以将application.properties文件换成application.yml,这两个文件都可以被SpringBoot自动识别并加载,但是如果是自定义的配置文件,就最好还是使用properties格式的文件,因为SpringBoot中暂时还并未提供手动加载yml格式文件的功能(这里指注解方式). yml 配置文件 属性格式:配置的属性和属性值要有空格隔开.没有空格报:java

springboot自定义starter

1,创建一个空工程 2,new一个Modules  ---------------- maven (启动器) : springboottest-spring-boot-starter 3,new一个Modules  ---------------- spring(做自动配置的): springboottest-spring-boot-starter-autoconfigurer 4,启动器pom文件中引入自动配置模块: <!--启动器--> <dependencies> <!

springboot 自定义 formatter 注解

我们在开发时会用到 @DateTimeFormat 这个注解. 对于从前台接收时间日期格式 很方便. 但如果前台传来的是 "是" “否” “有” "无" 这样的中文时,想要转成boolean 类型时,没有对应的注解,下面我们自己来实现这个注解. 本例基于 springboot 2.x jdk1.8 首先,创建一个注解 @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD

springboot自定义配置

1.说明 springboot的开发中,我们有些时候,需要将一些参数写进yml配置,方便部署后修改,这时我们便可以使用springboot 提供的自定义配置的功能了 2.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>t