Java 如何在Spring Boot中使用ORDER BY?

Java 如何在Spring Boot中使用ORDER BY?,java,mysql,spring,spring-data-jpa,spring-data,Java,Mysql,Spring,Spring Data Jpa,Spring Data,基本上,我正在为学校构建一个Web应用程序,它使用Telegram Bot API向我的联系人发送消息。在我的网页左侧有contacts div,MySQL中有表中所有联系人的列表。一切都很完美,只是没有按asc的名称排序 控制器 @Controller public class MainController { @Autowired private ContactsService contactsService; @GetMapping("/") public String allCont

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

控制器

@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>{
}
public interface ContactsRepository extends JpaRepository<Contacts, Integer> {
    public List<Contacts> findAllByOrderByNameAsc();
}
基本上,它只有id、姓名、电话号码、getter/setter和toString。您可以在服务中看到一条评论,这正是我无法理解的。当你们在网站上显示表格时,@Query需要在哪里,你们就可以订购了

阿比纳什·戈什的回答解决了一个问题。但其他人也很有帮助。
谢谢大家的帮助。

请尝试以下描述订单的代码。 您可以通过Sort.Direction.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");
 }
公共列表findAll(){
列表联系人=新建ArrayList();
对于(联系人联系人:contactsRespository.findAll(sortByIdDesc())){
联系人。添加(联系人);
}
返回联系人;
}
私有排序SortBydDesc(){
返回新排序(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");
 }
公共列表findAll(){
列表联系人=新建ArrayList();
对于(联系人联系人:contactsRespository.findAll(sortByNameAsc())){
联系人。添加(联系人);
}
返回联系人;
}
私有排序sortByNameAsc(){
返回新排序(Sort.Direction.ASC,“name”);
}

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

List<Contacts> findAllOrderByNameAsc();

您可以使用
JpaRepository
和JPA方法命名功能来命名
orderby

存储库

import org.springframework.data.repository.CrudRepository;
import totelegram.model.Contacts;
public interface ContactsRepository extends CrudRepository<Contacts, Integer>{
}
public interface ContactsRepository extends JpaRepository<Contacts, Integer> {
    public List<Contacts> findAllByOrderByNameAsc();
}
public interface contacts repository扩展了JpaRepository{
公共列表findAllByOrderByNameAsc();
}
服务

@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;
}
}
public List<Contacts> findAll(){
    List<Contacts> contacts = contactsRepository.findAllByOrderByNameAsc();
    return contacts;
}
公共列表findAll(){
List contacts=contacts-respository.findAllByOrderByNameAsc();
返回联系人;
}

问题是如何“按名称订购asc”,我已经回答了asc和DESC的问题。请检查编辑后的答案。