美文网首页
springDataJpa自定义Repository方法

springDataJpa自定义Repository方法

作者: 吗丁啉要餐前吃 | 来源:发表于2019-11-25 23:34 被阅读0次

    才开始接触springDataJpa,遇到不少坑,总结一下,希望能够帮助到大家。

    一般我们使用Repository进行数据库操作,只需要创建接口类,继承JPA的CrudRepository接口就可以了,需要分页的话继承PagingAndSortingRepository接口。不过,难免有一些复杂的数据库操作,需要自己创建sql语句,不过,JPA还为我们提供了@Query注解。但是,如果sql语句是动态进行拼接的,通过@Query注解也没有办法(@Query的value必须是常量)。这时候,就需要我们自己去实现方法了。
    这个实现和一般的类继承实现是有不同的,需要单独创建一个接口,用来对repository接口进行扩展,并创建repository进行实现。

    贴代码:

    1.repository接口, 添加继承的自定义接口

    @Repository
    public interface MyRepository
        extends PagingAndSortingRepository<ProgramInfoEntity, Long>,
        CustomRepository{
      
    }
    

    2.自定义扩展接口

    public interface CustomRepository {
    
        int update(int status, Set<Long> ids, Long count);
    }
    

    3.对扩展进行实现

    public class MyRepositoryImpl implements CustomRepository {
    
        @PersistenceContext
        private EntityManager entityManager;
    
        @Override
        @Modifying
        public int update(int status, Set<Long> ids, Long count) {
            Query query = entityManager.createQuery(" sql 语句");
            query.setParameter("status", status);       
            return query.executeUpdate();
        }
    }
    

    注意:实现类的名称必须是要扩展的接口名+impl,spring会默认进行装载。可以通过@EnableJpaRepositories(repositoryImplementationPostfix="Custom")来更改具体实现的后缀。

    相关文章

      网友评论

          本文标题:springDataJpa自定义Repository方法

          本文链接:https://www.haomeiwen.com/subject/llwjwctx.html