摘要:平常使用mysql直接使用sql语句进行书写,可是我们使用JPA就是不想写啊。这里我们使用快捷方法来写排序。
使用sql语句写OrderBy应该如下格式:
[ select 字段列表/* from 表名 where 条件 order by 字段名1 asc/desc, 字段名2 asc/desc,…]
数据库中的表信息
| |
接着根据表信息,在实体类中使用注解进行映射
package com.example.demo.dao;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
* @Classname User1
* @Description TODO
* @Date 2019/8/27 14:50
* @Created by lyc
*/
@Entity
@Data
@Table(name = "user1")
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })
public class User1 implements Serializable {
@Id
@Column(name = "user_id", length = 100)
private String userId;
@Column(name = "name", length = 100)
private Integer name;
@Column(name = "create_time", length = 32)
private Date createTime;
@Column(name = "weight", length = 11)
private int weight;
}
再然后来写Dao接口,这里可以分为三种方法来写。
第一种方法:使用快捷方法来写
package com.example.demo.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Classname User1Dao
* @Description TODO
* @Date 2019/8/27 14:53
* @Created by lyc
*/
public interface User1Dao extends JpaRepository<User1,String> {
/**
* 根据name查询数据并按照CreateTime来进行倒序排列
* @param name
* @return
*/
List<User1> getByNameOrderByCreateTimeDesc(String name);
/**
* 根据name查询数据并首先按照CreateTime来进行倒序排列,次要排序按照Weight顺序排列
* @param name
* @return
*/
List<User1> getByNameOrderByCreateTimeDescWeightAsc(String name);
/**
* 假如你需要所有的数据而不需要按照条件查询,就要按照这样来写:
* getBy+OrderBy+排序字段+排序方式
* @return
*/
List<User1> getByOrderByCreateTimeDesc();
}
第二种方法:使用原生sql来写
/**
* @Classname User1Dao
* @Description TODO
* @Date 2019/8/27 14:53
* @Created by lyc
*/
public interface User1Dao extends JpaRepository<User1,String> {
/**
* 根据name查询数据并按照CreateTime来进行倒序排列,
* sql语句都是和数据库表中相对应
* @param name
* @return
*/
@Query(value = "select * from user1 u where u.name = ?1 order by u.create_time desc ",nativeQuery = true)
List<User1> getByNameOrderByCreateTimeDesc(String name);
}
第三种方法:使用hql来写
/**
* @Classname User1Dao
* @Description TODO
* @Date 2019/8/27 14:53
* @Created by lyc
*/
public interface User1Dao extends JpaRepository<User1,String> {
/**
* 根据name查询数据并按照CreateTime来进行倒序排列
* @param name
* @return
*/
@Query(value = "select u from User1 u where u.name = ?1 order by u.createTime desc ")
List<User1> getByNameOrderByCreateTimeDesc(String name);
}
备注:@Query注解 nativeQuery = true代表使用原生sql进行查询,否则使用hql