java - Spring Boot中如何使用ORDER BY?

标签 java mysql spring spring-data-jpa spring-data

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

Controller

@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、getters/setters、toString。您可以在服务中看到一条评论,这正是我无法弄清楚的。 @Query 需要在哪里,以便当您在网站上显示表格时,您可以对它们进行排序。

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

最佳答案

尝试使用以下代码进行降序排列。 您可以通过 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");
 }

关于java - Spring Boot中如何使用ORDER BY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54990345/

相关文章:

java - 日历实例的创建成本特别高

php - HTML, PHP, MYSQL, 上传图片并将其 url 保存到数据库中

mysql - 将第二个字段与mysql查询中的第一个字段连接起来

java - 在 Spring 中检索缓存列表

java - JUnit + Spring 配置文件 : could not load JDBC driver class

java - Maven包错误: An attached artifact must have a different ID than its corresponding main artifact

java - 如何限制手机基本功能的使用,任何人都无法卸载我的应用,彻底锁定?

java - 在websphere本地信任库中添加证书;以编程方式

java - 当我按下 GUI 上的按钮时,如何存储按钮的值?

php - fatal error : Cannot use object of type mysqli_result as array