使用springboog+jpa框架因为业务需求不能使鼡封装好的save()方法,故需要在jpa容器里使用@Query注解写sql完成
即sql语句有误各种改,没用后来网上查,大多数说法是jpa的jpql不支持insert into 不经意看到一篇文章里,写的语句后面有一些不一样试之,完美解决所以记录下来: @Query(value = “sql语句”,nativeQuery = true)
这里先要认识并加入一个注解 @Modifying:
jpa容器中使用,当使用@Query寫jpql时如果是删除或修改操作,需要加入此注解进行修饰. 以通知 SpringData 这是一个 UPDATE 或 DELETE 操作 ;默认情况下,是只读所以查询不需要
然后就是@Query寫语句了:
版权声明:本文为博主原创文章,转载请附上博文链接!
封装User实体类对象password未赋值,则在查询配置中对应SQL传递参数值为null
if标签:会自动判断对应的属性是否为空,如果为空则从 SQL 去掉对应的条件,否则保留
where标签:会自动判断 where 關键字与紧随其后的条件直接是否存在其他条件,如果存在则保留条件中的 and 关键字,如果不存在则删除条件中的 and 关键字。
where标签:会自動判断 where 关键字与紧随其后的条件直接是否存在其他条件如果存在,则保留条件中的 and 关键字如果不存在,则删除条件中的 and 关键字
set 标签:用于 update 操作,会自动根据参数选择生成 SQL 语句
foreache 标签:可以迭代生成一系列值这个表情主要用于 SQL 的 in 语句。
trim标签:prefix 和 suffix 属性用于生成实际 SQL 语句會和标签内部的语句拼接,如果语句某个部分之前或之后遇到 prefixOverrides 或者 suffixOverrides 属性中指定的值MyBatis 框架会自动将其删除。在指定多个值的时候每个值後面都需要追加一个空格,保证不会和后面的 SQL 连接在一起