为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Spring Boot 中使用 ORDER BY?

如何在 Spring Boot 中使用 ORDER BY?

HUH函数 2022-07-20 10:53:34
基本上我正在为学校构建一个 Web 应用程序,它使用 Telegram Bot API 向我的联系人发送消息。在我的网页的左侧,我有联系人 div,并且有来自 MySQL 表中的所有联系人的列表。一切都很完美,只是它们没有按名称顺序排列。控制器@Controllerpublic class MainController {@Autowiredprivate 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@Transactionalpublic 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 的回答解决了一个问题。但其他人也很有帮助。谢谢大家的帮助。
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

尝试使用以下代码进行 desc order 。您可以通过Sort.Direction.ASC为 asc 执行操作,还可以根据需要更改字段名称。我在这里使用了“id”。它应该可以正常工作。


public List<Contacts> findAll(){

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

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

        contacts.add(contact);

    }

    return contacts;

}


 private Sort sortByIdDesc() {

        return new Sort(Sort.Direction.DESC, "id");

 }

对于您的问题,解决方案是:


public List<Contacts> findAll(){

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

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

        contacts.add(contact);

    }

    return contacts;

}


 private Sort sortByNameAsc() {

        return new Sort(Sort.Direction.ASC, "name");

 }


查看完整回答
反对 回复 2022-07-20
?
温温酱

TA贡献1752条经验 获得超4个赞

除了 Md Shifatul Isalm 的回答之外,您还可以创建一个存储库方法,例如:

List<Contacts> findAllOrderByNameAsc();

顺便说一句,您不需要额外的 ArrayList。只需从存储库返回值:

return contactsRepository.findAllOrderByNameAsc();


查看完整回答
反对 回复 2022-07-20
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您可以使用JpaRepositoryJPA 方法命名功能Order by


存储库


public interface ContactsRepository extends JpaRepository<Contacts, Integer> {

    public List<Contacts> findAllByOrderByNameAsc();

}

服务


public List<Contacts> findAll(){

    List<Contacts> contacts = contactsRepository.findAllByOrderByNameAsc();

    return contacts;

}


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 253 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号