@Query注解使用详情

@Query注解使用详情

常用属性

value : 取值,要么使用原生SQL,要么使用JPQL

nativeQuery :表示是否采用原生SQL,诸如select * from tableName

取值方式

1、使用:形参名

示例:

单个形参的情况

:参数名

多个形参的情况:

:参数名

2、使用?数值,数值表示形参位置,1表示第一个形参,依次内推

示例:

单个形参的情况:

?数值

多个形参的情况:

?形参序列

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

特殊情况

3、使用@Param("参数名")+:参数名

通常使用@Param注解都是在多个形参的情况下使用

@Param()

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

使用#{#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);

以上完成了@Query注解的使用详情的介绍,如果觉得小编写的不错的话,给小编点个赞哦,我们下期再见!
关注下方小编的公众号,更多精彩等着你哦


版权声明:本文为qq_41473905原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。