@Query注解使用详情
@Query注解使用详情
常用属性
value : 取值,要么使用原生SQL,要么使用JPQL
nativeQuery :表示是否采用原生SQL,诸如select * from tableName
取值方式
1、使用:形参名
示例:
单个形参的情况

多个形参的情况:

2、使用?数值,数值表示形参位置,1表示第一个形参,依次内推
示例:
单个形参的情况:

多个形参的情况:

特殊情况:数值也可不写,若不写具体的数值,默认是从1开始递增,如下图示例:

3、使用@Param("参数名")+:参数名
通常使用@Param注解都是在多个形参的情况下使用

4、获取实体类名称,使用#{#entityName}

CRUD
使用@Query注解实现删、改、查、增的示例,如下所示:
删
@Modifying @Transactional @Query(value = "delete from User where id = ?1") void deleteByUserId(Integer id);
?后面的数值1,表示第一个形参的值,以此类推,如果方法有多个形参,数值也会依次递增,特殊情况,数值也可不写,若不写具体的数值,默认是从1开始递增
改
@Modifying @Transactional @Query("update User set email = ?1 where id = ?2") void updateUser(String email,Integer id);
查
@Query(value = "select * from tb_user where email like concat('%',?2,'%') and username like concat('%',?1,'%') ",nativeQuery = true)
User findByUsernameAndEmail( String username, String email);
增
@Modifying @Transactional @Query(value = "insert into tb_user(email,id_card,username,wage) values (:email,:idCard,:username,:wage)",nativeQuery = true) void insertUser(String email,String idCard,String username,Double wage);

浙公网安备 33010602011771号