首页 > 代码库 > springboot 自定义Repository
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); }
springboot 自定义Repository
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。