springboot中mybatis注解版和springDataJPA的注解版查询解决@Param的区分

mybatis注解版

一个参数的时候, 参数可以使用Param(’'username") String username,当然也可以使用String username,那么什么时候使用@Param这个注解呢,当方法参数为一个的时候,可以使用,但是前提是你的@select中的查询的时候不能使用 ${} ,只可以使用 #{}
不使用@Param注解的满足条件

  1. 方法就有一个参数
  2. 方法上的@Select中的查询语句必须使用#{},而不是 。 小 建 议 , 最 好 不 使 用 {}。小建议,最好不使用 使{},防止sql注入攻击
@Select("select * from user where username=#{username}")
public User findByName(String username);

当参数为多个的时候,这个时候必须使用@Param,否则会报错。

@Select("select * from user where username=#{username} and password=#{password}")
public User findByUser(@Param("username") String username,@Param("password") String password);

SpringDataJPA注解版

nativeQuery指的是原生的sql

@Query(value = "select * from book where  name=?1", nativeQuery = true)
List<Book> findByName(String name);

当然你也可以选择不使用原生的sql语句

@Query(value = "select name,author,price from Book b where b.name like %:name%")
List<Book> findByNameMatch(@Param("name") String name);

注意:什么时候使用@Param的问题又来了,在springDataJPA中,如果你想使用?1 ?2 …这种带问号的语句格式,这个时候你就可以不用带@Param,但是你如果使用 :name 这种格式,就必须使用@Param

@Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")
List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author,
        @Param("price") long price);

总结:

  1. 在springboot中强烈建议使用springDataJPA,Spring官方封装的特别好,我们只需要继承JpaRepository<类,类ID类型>就可以满足需要的基本查询
  2. 对分页也进行了很好的封装,PageRequest是个很好的分页选择,下个博客我要写关于springBoot中的分页查询以及多条件查询,这个技术我在我的前面博客中提到的项目南阳理工下载中心这个项目中使用到
  3. 希望我的分享对你有帮助
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值