package com.estate.expert.admin.domain.user; import com.estate.expert.admin.domain.common.EntityBaseRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; public interface UserRepository extends EntityBaseRepository { @Query("select u from User u where (:keyword is null or :keyword = '' or u.name like %:keyword% or u.mobile like %:keyword%) " + "and (:roleId is null or u.roleId = :roleId)" + "and u.deleted = false order by u.updateTime desc") Page findAllByKeyword(@Param("keyword") String keyword, @Param("roleId") Integer roleId, Pageable page); List findAllByStateAndDeleted(UserState state, boolean deleted); int countByDeletedIsFalse(); User findByMobile(String mobile); User findByName(String username); @Query("select u from User u where u.deleted = false and u.name like %:name%") List findByNameLike(String name); @Query("select u from User u where u.deleted = false") List findNoDeleted(); }