@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);

 

posted @ 2021-10-21 15:33  门罗的魔术师  阅读(838)  评论(0)    收藏  举报