1. 程式人生 > >springcloud 復雜sql查詢

springcloud 復雜sql查詢

where 列表 wired als ram query req stat amp

springcloud有自動生成sql的功能,不需要手寫簡單的sql語句實現,復雜的sql查詢需要通過手寫sql語句實現查詢功能;

eg:在controller層

@RestController
@RequestMapping("api")
public class MemberController {

@RequestMapping(value = "v2/member/member/messageList") // 用戶消息首頁列表,未使用
public Object messageList(
@RequestParam(required = false, defaultValue = PageConstants.DEFAULT_PAGE_NUMBER) Integer page,

//required = false page可以不賦值,PageConstants.DEFAULT_PAGE_NUMBER為常量
@RequestParam(required = false, defaultValue = PageConstants.DEFAULT_PAGE_SIZE) Integer size,
HttpServletRequest httpServletRequest) {

// 通知公告
List<AlumniNotice> alumniNoticeList = new ArrayList<>();

alumniNoticeList = alumniNoticeService.getListByAlumniAssociationId(alumniId, page, size);
map.put("alumniNoticeList", alumniNoticeList);
return APIResult.createSuccess(map);
}

在serviceImpl層:

@Service
public class AlumniNoticeServiceImpl {
@Autowired
private AlumniNoticeRepository alumniNoticeRepository;

public List<AlumniNotice> getListByAlumniAssociationId(String alumniAssociationId, Integer page, Integer size) {
// 引入過濾掉公告通知的常量
Integer excludedStatus = MemberMessageGlobalUtils.MEMBER_MESSAGE_DELETED;
// 引入對公告通知進行排序的常量
Integer sortStatus = MemberMessageGlobalUtils.MEMBER_MESSAGE_DECIDED;
/**
* 通過alumniAssociationId,expectedStatus、sortStatus,page,size查詢公告通知的方法
*/
return alumniNoticeRepository.findByAlumniAssociationId(alumniAssociationId, excludedStatus, sortStatus, page,
size);
}
}

在repository層:

@Repository
public interface AlumniNoticeRepository extends JpaRepository<AlumniNotice, Integer> {
AlumniNotice findById(String id);

/**
* 通過sql語句 查詢符合alumni_association_id、status條件的公告通知集合,並對集合過濾、按時間進行排序、分頁顯示

*?number 為sql映射到方法中的第number個元素,分頁顯示時,註意size後無“;”
*/

@Query(value = "SELECT * FROM alumni_notice an WHERE (an.alumni_association_id) = (?1) AND \n"
+ "(an.status) &(?2) !=(?2) ORDER BY ((an.status) &(?3))DESC,create_time DESC limit ?4 , ?5", nativeQuery = true)
List<AlumniNotice> findByAlumniAssociationId(String alumniAssociationId, Integer excludedStatus, Integer sortStatus,
Integer page, Integer size);
}

通過以上代碼完成springcloud復雜sql語句的調用。

springcloud 復雜sql查詢