MyBatis之动态SQL&&分页

本文详细介绍了MyBatis的动态SQL,包括foreach标签的使用,模糊查询的三种形式,以及mybatis对结果集的处理。此外,还探讨了MyBatis的分页查询,讲解了第三方分页插件的集成和使用,并提到了如何处理特殊字符的问题。
摘要由CSDN通过智能技术生成

目录

一、MyBatis动态SQL

        1.1 mybatis的foreach标签

二、模糊查询

三、mybatis对结果集的处理

四、分页查询

        4.1 第三方分页插件

        4.2 集成mybatis进行使用

五、对特殊字符的处理


一、MyBatis动态SQL

        1.1 mybatis的foreach标签

        我们一起要实现mybatis的动态SQL,就要了解他的两个标签:if、forEach

        我们利用in关键词查询的案例来一起看看关于forEach标签的使用;

        首先就是在昨天Leaf发布的文章:MyBatis环境搭建&&测试增删改查__Leaf1217的博客-CSDN博客

里面介绍的插件自动生成的一个配置文件里配置我们要添加的方法配置信息:BookMapper.xml

这里的配置很重要,着重看看forEach标签以及它的属性。 

  <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>

然后在自动生成的方法接口BookMapper.java里面也添加上方法:selectByIn

    //通过in关键字进行查询,讲解foreach标签的使用
    //如果参数 是 非实体类(book、order、...),那么记得加上注解 @param
    //bookIds是对应collection属性的
    List<Book> selectByIn(@Param("bookIds") List bidIds);

然后再在我们自己写的实际使用的接口中也添加上:selectByIn

package com.leaf.biz;

import com.leaf.model.Book;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Leaf
 * @site 2977819715
 * @company 玉渊工作室
 * @create  2022-08-11 1:09
 */
public interface BookBiz {

    int deleteByPrimaryKey(Integer bid);

    Book selectByPrimaryKey(Integer bid);

    List<Book> selectByIn(List bidIds);

}

然后我们Alt + Enter,自动补全实现方法:

    @Override
    public List<Book> selectByIn(List bidIds) {
        return bookMapper.selectByIn(bidIds);
    }

 再次Alt + Enter,建立一个测试方法进行测试:

    @Test
    public void selectByIn() {
        List<Integer> bookIds = Arrays.asList(new Integer[]{31, 32, 33, 34});
        bookBiz.selectByIn(bookIds).forEach(System.out::println);
    }

最后我们运行测试: 

我们看到测试结果,查询到了,这就是关于forEach标签的使用,多去看看粘贴的代码。


二、模糊查询

 2.1 mybatis模糊查询的三种形式

和上一个使用forEach标签测试的方法实现步骤一样;

先把三种方式的配置信息放到BookMapper.xml里面:

<select id="selectBooksLike1" resultType="com.leaf.model.Book" parameterType="java.lang.String">
  select * from t_mvc_book where bname like #{bname}
</select>

<select id="selectBooksLike2" resultType="com.leaf.model.Book" parameterType="java.lang.String">
  select * from t_mvc_book where bname like '${bname}'
</select>

<select id="selectBooksLike3" resultType="com.leaf.model.Book" parameterType="java.lang.String">
  select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%')
</select>

然后还是一样的在自动生成的方法接口BookMapper.java里面也添加上三个方法:

    List<Book> selectBooksLike1(@Param("bname") String bname);

    List<Book> selectBooksLike2(@Param("bname") String bname);

    List<Book> selectBooksLike3(@Param("bname") String bname);

然后再在我们自己写的实际使用的接口Bookbiz中也添加上:

    List<Book> selectBooksLike1(String bname);

    List<Book> selectBooksLike2(String bname);

    List<Book> selectBooksLike3(String bname);

然后我们Alt + Enter,自动补全实现方法:

    @Override
    public List<Book> selectBooksLike1(String bname) {
        return bookMapper.selectBooksLike1(bname);
    }

    @Override
    public List<Book> selectBooksLike2(String bname) {
        return bookMapper.selectBooksLike2(bname);
    }

    @Override
    public List<Book> sel
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Leaf1217

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值