|
| 1 | +package org.baeldung.persistence.repository; |
| 2 | + |
| 3 | +import org.baeldung.persistence.model.User; |
| 4 | +import org.springframework.data.domain.Page; |
| 5 | +import org.springframework.data.domain.Pageable; |
| 6 | +import org.springframework.data.domain.Sort; |
| 7 | +import org.springframework.data.jpa.repository.JpaRepository; |
| 8 | +import org.springframework.data.jpa.repository.Modifying; |
| 9 | +import org.springframework.data.jpa.repository.Query; |
| 10 | +import org.springframework.data.repository.query.Param; |
| 11 | +import org.springframework.stereotype.Repository; |
| 12 | + |
| 13 | +import java.util.Collection; |
| 14 | +import java.util.List; |
| 15 | + |
| 16 | +@Repository("userRepository") |
| 17 | +public interface UserRepository extends JpaRepository<User, Integer> { |
| 18 | + |
| 19 | + @Query("SELECT u FROM User u WHERE u.status = 1") |
| 20 | + Collection<User> findAllActiveUsers(); |
| 21 | + |
| 22 | + @Query(value = "SELECT * FROM USERS u WHERE u.status = 1", nativeQuery = true) |
| 23 | + Collection<User> findAllActiveUsersNative(); |
| 24 | + |
| 25 | + @Query("SELECT u FROM User u WHERE u.status = ?1") |
| 26 | + User findUserByStatus(Integer status); |
| 27 | + |
| 28 | + @Query(value = "SELECT * FROM Users u WHERE u.status = ?1", nativeQuery = true) |
| 29 | + User findUserByStatusNative(Integer status); |
| 30 | + |
| 31 | + @Query("SELECT u FROM User u WHERE u.status = ?1 and u.name = ?2") |
| 32 | + User findUserByStatusAndName(Integer status, String name); |
| 33 | + |
| 34 | + @Query("SELECT u FROM User u WHERE u.status = :status and u.name = :name") |
| 35 | + User findUserByStatusAndNameNamedParams(@Param("status") Integer status, @Param("name") String name); |
| 36 | + |
| 37 | + @Query(value = "SELECT * FROM Users u WHERE u.status = :status AND u.name = :name", nativeQuery = true) |
| 38 | + User findUserByStatusAndNameNamedParamsNative(@Param("status") Integer status, @Param("name") String name); |
| 39 | + |
| 40 | + @Query("SELECT u FROM User u WHERE u.status = :status and u.name = :name") |
| 41 | + User findUserByUserStatusAndUserName(@Param("status") Integer userStatus, @Param("name") String userName); |
| 42 | + |
| 43 | + @Query("SELECT u FROM User u WHERE u.name like ?1%") |
| 44 | + User findUserByNameLike(String name); |
| 45 | + |
| 46 | + @Query("SELECT u FROM User u WHERE u.name like :name%") |
| 47 | + User findUserByNameLikeNamedParam(@Param("name") String name); |
| 48 | + |
| 49 | + @Query(value = "SELECT * FROM users u WHERE u.name LIKE ?1%", nativeQuery = true) |
| 50 | + User findUserByNameLikeNative(String name); |
| 51 | + |
| 52 | + @Query(value = "SELECT u FROM User u") |
| 53 | + List<User> findAllUsers(Sort sort); |
| 54 | + |
| 55 | + @Query(value = "SELECT u FROM User u ORDER BY id") |
| 56 | + Page<User> findAllUsersWithPagination(Pageable pageable); |
| 57 | + |
| 58 | + @Query(value = "SELECT * FROM Users ORDER BY id \n-- #pageable\n", countQuery = "SELECT count(*) FROM Users", nativeQuery = true) |
| 59 | + Page<User> findAllUsersWithPaginationNative(Pageable pageable); |
| 60 | + |
| 61 | + @Modifying |
| 62 | + @Query("update User u set u.status = :status where u.name = :name") |
| 63 | + int updateUserSetStatusForName(@Param("status") Integer status, @Param("name") String name); |
| 64 | + |
| 65 | + @Modifying |
| 66 | + @Query(value = "UPDATE Users u SET u.status = ? WHERE u.name = ?", nativeQuery = true) |
| 67 | + int updateUserSetStatusForNameNative(Integer status, String name); |
| 68 | + |
| 69 | +} |
0 commit comments