mybatis注解——模糊查询

1.概要

本文主要记录我在学习mybatis注解时 多表的动态模糊查询

什么叫动态查询,什么又叫做非动态查询呢?

  像这种代码是非动态的,因为where后面的条件是固定的,只能有确定的一个条件,不能增加也不能删除改条件,这就是非动态查询
  @Select("select * from t_blog where type_id=#{typeId}")

如果你理解了非动态查询,动态查询就很好理解了,动态查询和非动态查询的区别是,动态查询的条件是非固定的。

动态查询的好处
在淘宝网上购买商品时,你根据个人喜好进行动态的选择物品,你动态的进行加减分类项查询的过程就是动态查询,动态查询写一条sql语句即可。如果不用动态查询,后端就要写很多的sql语句,这样十分的麻烦

废话不多说直接上代码

 @Select("<script>"+
            " select b.id,b.title,b.update_time,b.recommend,b.type_id,t.id,t.name from t_blog b ,t_type t where 1=1 "+
            "<if test= \"typeId != null \"> and b.type_id = #{typeId} </if>"+
            "<if test=\"title != null \">and title like CONCAT('%',#{title},'%')</if>"+
           "</script>"
    )
    List<BlogQuery> searchByTitleOrTypeOrRecommend(SearchBlog searchBlog);
    
<script>  </script> 这两兄弟必须有,是动态查询的开始和结束符
  " select b.id,b.title,b.update_time,b.recommend,b.type_id,t.id,t.name from t_blog b ,t_type t where 1=1 "+
    该语句代表两个表进行联合查询,其中的where 1=1 代表true,意思是无论我们之后的动态查询 都为else 该语句也是正确的

  "<if test= \"typeId != null \"> and b.type_id = #{typeId} </if>"+
  "<if test=\"title != null \">and title like CONCAT('%',#{title},'%')</if>"+
 这两句if语句代表,如果你满足了<if   ____ >中的条件就进入 <if>  </if> 条件体中去执行代码           

总结
我在写该代码的思路是:先把sql语句完整的写出来并在navicat上实验 如果正确的话再添加上非sql语句的代码。然后在idea上进行单元测试。

如果我写的有什么错误的话还请各位大佬指点一下。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值