springcloud 复杂sql查询

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语句的调用。

猜你喜欢

转载自www.cnblogs.com/qqzhulu/p/10146152.html
今日推荐