2 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊
我不確定,但也許一些重構(gòu)會(huì)有所幫助。例如,您似乎正在對(duì)request數(shù)據(jù)庫使用某種形式,如果根據(jù)參數(shù)進(jìn)行填充,那么也許可以像這樣進(jìn)行管理。
fun getMessages(name: String, pageable: Pageable, locale: String?, subject: String?,
recipient: String?): Page<MessageDTO>? {
val request = where(hasMessageName(name))
locale?.let{ request.and(hasLocale(it)) }
subject?.let{ request.and(hasSubject(it)) }
recipient?.let{ request.and(hasRecipient(it))}
return messageRepository.findAll(request, pageable)
.map { messageMapper.toMessageDTO(it) }
.takeIf { it.content.isNotEmpty() }
}
在這里,我不確定.and()方法是如何工作的,所以也許它應(yīng)該是這樣的: request = request.and(...)

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
您可以if
用一個(gè)when
語句替換您的語句,以便更容易閱讀:
fun getMessages(name: String, pageable: Pageable, locale: String?, subject: String?,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? recipient: String?): Page<MessageDTO>? = when {
? ? !locale.isNullOrEmpty() && !subject.isNullOrEmpty() && !recipient.isNullOrEmpty() ->
? ? ? ? messageRepository.findAll(where(hasMessageName(name).and(hasLocale(locale!!)
? ? ? ? ? ? .and(hasSubject(subject!!).and(hasRecipient(recipient!!))))), pageable)
? ? !locale.isNullOrEmpty() ->
? ? ? ? messageRepository.findAll(where(hasMessageName(name).and(hasLocale(locale!!))), pageable)
? ? !subject.isNullOrEmpty() ->
? ? ? ? messageRepository.findAll(where(hasMessageName(name).and(hasSubject(subject!!))), pageable)
? ? else ->
? ? ? ? messageRepository.findAll(where(hasMessageName(name)), pageable)
}.map { messageMapper.toMessageDTO(it) }.takeIf { it.content.isNotEmpty() }
添加回答
舉報(bào)