如何在 Spring Boot 中使用 ORDER BY?

基本上我正在为学校构建一个 Web 应用程序,它使用 Telegram Bot API 向我的联系人发送消息。在我的网页的左侧,我有联系人 div,并且有来自 MySQL 表中的所有联系人的列表。一切都很完美,只是它们没有按名称顺序排列。


控制器


@Controller

public class MainController {


@Autowired

private ContactsService contactsService;


@GetMapping("/")

public String allContacts(HttpServletRequest request) {

    request.setAttribute("contacts", contactsService.findAll());

    request.setAttribute("mode", "MODE_CONTACTS");

    return "index";

}


@RequestMapping("/input")

public String input() {

    return("input");

}

}

存储库


import org.springframework.data.repository.CrudRepository;

import totelegram.model.Contacts;

public interface ContactsRepository extends CrudRepository<Contacts, Integer>{

}

服务


@Service

@Transactional

public class ContactsService {


private final ContactsRepository contactsRepository;


public ContactsService(ContactsRepository contactsRepository) {

    super();

    this.contactsRepository = contactsRepository;

}


//@Query("select * from contacts order by name asc")

public List<Contacts> findAll(){

    List<Contacts> contacts = new ArrayList<>();

    for(Contacts contact : contactsRepository.findAll()) {

        contacts.add(contact);

    }

    return contacts;

}

}

模型


@Entity(name = "contacts")

public class Contacts implements Serializable{

基本上它只有 id、name、phone_number、getter/setter、toString。您可以在服务中看到一条评论,这正是我无法弄清楚的。当您在网站上显示表格时,@Query 需要在哪里进行订购。


Abinash Ghosh 的回答解决了一个问题。但其他人也很有帮助。谢谢大家的帮助。


HUH函数
浏览 254回答 3
3回答

慕哥9229398

尝试使用以下代码进行 desc order 。您可以通过Sort.Direction.ASC为 asc 执行操作,还可以根据需要更改字段名称。我在这里使用了“id”。它应该可以正常工作。public List<Contacts> findAll(){&nbsp; &nbsp; List<Contacts> contacts = new ArrayList<>();&nbsp; &nbsp; for(Contacts contact : contactsRepository.findAll(sortByIdDesc())) {&nbsp; &nbsp; &nbsp; &nbsp; contacts.add(contact);&nbsp; &nbsp; }&nbsp; &nbsp; return contacts;}&nbsp;private Sort sortByIdDesc() {&nbsp; &nbsp; &nbsp; &nbsp; return new Sort(Sort.Direction.DESC, "id");&nbsp;}对于您的问题,解决方案是:public List<Contacts> findAll(){&nbsp; &nbsp; List<Contacts> contacts = new ArrayList<>();&nbsp; &nbsp; for(Contacts contact : contactsRepository.findAll(sortByNameAsc())) {&nbsp; &nbsp; &nbsp; &nbsp; contacts.add(contact);&nbsp; &nbsp; }&nbsp; &nbsp; return contacts;}&nbsp;private Sort sortByNameAsc() {&nbsp; &nbsp; &nbsp; &nbsp; return new Sort(Sort.Direction.ASC, "name");&nbsp;}

温温酱

除了 Md Shifatul Isalm 的回答之外,您还可以创建一个存储库方法,例如:List<Contacts>&nbsp;findAllOrderByNameAsc();顺便说一句,您不需要额外的 ArrayList。只需从存储库返回值:return&nbsp;contactsRepository.findAllOrderByNameAsc();

杨__羊羊

您可以使用JpaRepositoryJPA 方法命名功能Order by存储库public interface ContactsRepository extends JpaRepository<Contacts, Integer> {&nbsp; &nbsp; public List<Contacts> findAllByOrderByNameAsc();}服务public List<Contacts> findAll(){&nbsp; &nbsp; List<Contacts> contacts = contactsRepository.findAllByOrderByNameAsc();&nbsp; &nbsp; return contacts;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java