@Query注解
使用Spring Data虽然方便了不少,但是对于一些复杂的sql语句还需要使用@Query注解来进行相关的标注说明。
属性
value:需要写的sql语句;
nativeQuery=true/false:当nativeQuery = true时,是可以执行的原生sql语句,所谓原生sql,也就是说这段sql会拷贝到数据库中。如果没有nativeQuery = true时,就不是原生sql,而其中的所查询的表名也不是数据库对应的真正的表名,而是对应的实体名,并且sql中的字段名也不是数据库中真正的字段名,而是实体的字段名。
例如:
实体类:
@Entity
@Table(name = "S_STUDENT")
public class student{
@Id
@Column(length = 38)
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "assigned")
private String id;//id
@Column
private String name;//姓名
@Column(name = "class")//数据库的字段名
private String grade;//年级
}
当有nativeQuery属性时:
@Query(value="select s.class,count(s.class) from s_student s group by s.class", nativeQuery=true)
List<Map<String,Object>> groupByClass();
当没有nativeQuery属性时:
@Query(value="select s.grade,count(s.grade) from student s group by s.grade")
List<Map<String,Object>> groupByClass();
参考文章:
https://blog.csdn.net/myme95/article/details/84143341