mybatis模糊查询/分页查询

模糊查询 like

        concat关键字

<select id="selecttj" resultMap="BaseResultMap">
    select <include refid="Base_Column_List"/> from book_info
    <where>
      <if test="bookName!=null and bookName!=''">
         book_name=#{bookName} like concat('%',#{bookName},'%')
      </if>
      <if test="bookAuthor!=null and bookAuthor!=''">
        book_author like concat('%',#{bookAuthor},'%')
      </if>
      <if test="bookPrice!=null and bookPrice!=''">
         book_price like concat('%',#{bookPrice},'%')
      </if>
      <if test="bookPub!=null and bookPub!=''">
         book_pub like concat('%',#{bookPub},'%')
      </if>
    </where>
  </select>

分页查询PageHelper

        sql分页查询语句

                select * from 表名  limit 0,5;

1,引入PageHelper依赖

 <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.11</version>
        </dependency>

2,加入拦截

<plugins>
        <!-- com.github.pagehelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
            <property name="param1" value="value1"/>
        </plugin>
    </plugins>

3,测试

  public class Testdao {
    private SqlSession session;
    @Before
    public void batis()throws Exception{
        Reader resourceAsReader = Resources.getResourceAsReader("batis.xml");
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsReader);
        session = build.openSession();
    }
 @Test
    public void seecef()throws Exception{
//使用分页功能 request.getParamter("page")  request.getParamter("pageSize")
        BookIDao mapper = session.getMapper(BookIDao.class);
        PageHelper.startPage(1,20);
        Book book = new Book();
        book.setBookAuthor("曹");
        List<Book> selecttj = mapper.selecttj(book);
        //可以把查询的结果封装到PageInfo类中 包含你想要的任何信息
        PageInfo<Book> pageInfo = new PageInfo<Book>(selecttj);
        System.out.println("总条数"+pageInfo.getTotal());
        System.out.println("当前页数"+pageInfo.getPageNum());
        System.out.println("数据"+pageInfo.getList());
        System.out.println(selecttj);
    }
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis 是一种流行的 Java 持久化框架,它提供了许多方便的查询功能。模糊查询分页查询都是实际开发中经常使用的功能,下面我们来介绍一下如何在 Mybatis 中进行模糊查询分页。 对于模糊查询,我们可以使用 Mybatis 的动态 SQL 功能来实现。比如,我们需要查询名字中含有 "张" 的用户,可以使用以下语句: ```xml <select id="findUsersByName" resultType="User"> SELECT * FROM user WHERE name LIKE #{name} </select> ``` 在上面的语句中,#{name} 是一个占位符,后面可以传入一个字符串来代替。在实际使用中,我们可以在传入字符串的前后加上 "%",表示模糊匹配。 ```java String name = "%张%"; List<User> users = mapper.findUsersByName(name); ``` 上面的代码中,我们将 "%" 和查询条件串接在一起,并调用了一个 mapper 方法来执行查询。这样就可以实现简单的模糊查询了。 接下来,我们看看如何进行分页查询Mybatis 内置了一个 RowBounds 类来实现分页查询。RowBounds 通过两个参数来指定查询的结果集范围,分别是 offset 和 limit。其中 offset 表示查询的起始位置,limit 表示查询的条数。 ```java RowBounds rowBounds = new RowBounds(offset, limit); List<User> users = mapper.findUsers(rowBounds); ``` 在上面的代码中,我们使用了 RowBounds 来进行分页查询。offset 表示查询的起始位置,limit 表示查询的条数。mapper.findUsers() 方法会返回一个 List,表示查询结果集。 如果我们需要同时进行模糊查询分页查询,就可以将它们结合起来,比如: ```java String name = "%张%"; int offset = 0; int limit = 10; RowBounds rowBounds = new RowBounds(offset, limit); List<User> users = mapper.findUsersByName(name, rowBounds); ``` 这样就可以同时进行模糊查询分页查询了。在实际开发中,我们还可以将查询条件封装成一个对象,方便使用。比如: ```java public class UserQuery { private String name; private int offset; private int limit; // getters 和 setters 略 public RowBounds getRowBounds() { return new RowBounds(offset, limit); } } UserQuery query = new UserQuery(); query.setName("%张%"); query.setOffset(0); query.setLimit(10); List<User> users = mapper.findUsersByName(query.getName(), query.getRowBounds()); ``` 总之, Mybatis 提供了非常方便的动态 SQL 功能和 RowBounds 分页功能,方便我们进行灵活的查询操作。在实际开发中,需要注意查询效率和代码复杂度的平衡,避免过度复杂的查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值