1. 首页
  2. 软件开发
  3. SpringData——持久化数据需要知道的自定义Repository详细步骤。

SpringData——持久化数据需要知道的自定义Repository详细步骤。

  • 发布于 2024-08-17
  • 1 次阅读

自定义Repository方法允许在Repository接口中定义自己的方法,以满足特定的数据访问需求。这些方法可以是基于Spring Data JPA的命名约定,也可以是基于自定义的查询逻辑。

1. 创建一个自定义的Repository接口

创建一个自定义的Repository接口,定义自己的方法。这个接口通常扩展自Spring Data的Repository接口或其子接口(如JpaRepository)。

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.NoRepositoryBean;

import java.util.List;

@NoRepositoryBean
public interface CustomUserRepository<T> {
   

    List<T> findUsersByCustomCriteria(String customCriteria);
}

2. 创建一个实现自定义Repository接口的类

创建一个实现自定义Repository接口的类,并实现自定义方法。这个类通常命名为Repository接口的名称后面加上"Impl",并实现自定义方法的逻辑。

import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.util.List;

@Repository
public class CustomUserRepositoryImpl<T> implements CustomUserRepository<T> {
   

    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public List<T> findUsersByCustomCriteria(String customCriteria) {
   
        Query query = entityManager.createQuery("SELECT u FROM User u WHERE u.customField = :customCriteria");
        query.setParameter("customCriteria", customCriteria);
        return query.getResultList();
    }
}

3. 自定义Repository接口中添加一个注解

在自定义Repository接口中添加一个注解,引用自定义实现类。

import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.RepositoryDefinition;

import java.io.Serializable;

@NoRepositoryBean
@RepositoryDefinition(domainClass = User.class, idClass = Long.class)
public interface CustomUserRepository<T> {
   

    List<T> findUsersByCustomCriteria(String customCriteria);
}

4. 使用自定义Repository接口中定义的方法

使用自定义Repository接口中定义的方法。在Service层或其他需要访问数据的地方,注入自定义Repository接口,并调用自定义方法。

@Service
public class UserService {
   

    @Autowired
    private CustomUserRepository<User> customUserRepository;

    public List<User> getUsersByCustomCriteria(String customCriteria) {
   
        return customUserRepository.findUsersByCustomCriteria(customCriteria);
    }
}

原文链接: https://blog.csdn.net/2401_82884096/article/details/138120972