MyBatis 动态SQL与分页

本文详细介绍了MyBatis中的动态SQL,包括if、foreach标签在插入和查询中的应用,以及模糊查询的三种方式。同时,探讨了结果集处理的resultMap和resultType两种方式,并展示了如何集成第三方分页插件PageHelper进行高效分页。最后,提到了特殊字符的处理,确保SQL语句的安全执行。
摘要由CSDN通过智能技术生成

前言

上篇文章简单分享了MyBatis的入门,这次就来分享Mybatis的动态SQL和分页。


一、MyBatis的if、foreach标签

        我们自动生成的增删改查方法,跟之前自定义MVC还是不一样的。同样的增加方法在自定义MVC中是这样的。

Insert into t_mvc_book(id,name,price) values(?,?,?)

我们要传三个参数。假设id不为自动增长,name = zs, price = 11;那么id就为null。

而mybatis自动生成的就有所不同。

        1、if标签

 <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="bid != null" >
        bid,
      </if>
      <if test="bname != null" >
        bname,
      </if>
      <if test="price != null" >
        price,
      </if>
    </trim>

 在MyBatis生成的方法中,用到了if标签,判断该字段是否为null,如果该字段为空,就不会拼接该字段。

例如:id为空,其他不为空。SQL语句是

Insert into t_mvc_book(name,price) values(?,?)

        2、foreach标签

 我们查询时,会有查询数据库中在某个集合中的内容。

例如 selec from t_mvc_book where bid in(31,32,33,34)之类的。

如果用for循环或者foreach将数组转变为字符串

或许会用以下方式

 public void test3(){
        int[] ints = {1,2,3,4,5,6};
//        将数组转成字符串
        StringBuffer sb = new StringBuffer();
        for (int i:ints){
            sb.append(i);
            sb.append(",");
        }
        System.out.println(sb);
    }

明显多了一个逗号。或许在分割一下就OK了

而mybatis中的foreach标签就不一样啦。 

//    如果参数 为非实体类 记得 加注解
    List<Book> selectByIn(@Param("bookIds") List bookIds);

 

<select id="selectByIn" resultMap="BaseResultMap" parameterType="java.util.List" >
    select
    <include refid="Base_Column_List" />
    from t_mvc_book
    where bid in
    <foreach collection="bookIds" open="(" close=")" separator="," item="bid">
      #{bid}
    </foreach>
  </select>
@Test
    public void selectByIn() {
        bookBiz.selectByIn(Arrays.asList(new Integer[]{31,32,33,34})).forEach(System.out:
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值