前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态sql模糊查询和分页「建议收藏」

动态sql模糊查询和分页「建议收藏」

作者头像
全栈程序员站长
发布2022-08-25 09:56:01
1.1K0
发布2022-08-25 09:56:01
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

文章目录

动态sql

BookMapper

xml

bookservice

测试: MapperSql.test

运行:

模糊查询

BookMapper

BookMapper.xml

Bookservice

StringUtiles

测试: 一共介绍了三种模糊查询的方法, 对比第三种更加实用。

运行:

查询返回结果集的处理

BookMapper

Bookmapper.xml

代码语言:javascript
复制
 <select id="List1" resultMap="BaseResultMap">
    select * from t_mvc_book
  </select>
  <select id="List2" resultType="com.caoluo.model.Book">
    select * from t_mvc_book
  </select>
  <select id="list3" resultType="com.caoluo.model.Book" parameterType="com.caoluo.model.BookVo">
    select * from t_mvc_book where bid in
    <foreach collection="bookIds" open="(" close=")" separator="," item="bid">
    #{bid}
    </foreach>
  </select>
  <select id="list4" resultType="java.util.Map" parameterType="java.util.Map" >
      select * from t_mvc_book
      <where>
        <if test="null != bname and bname !=''">
          and bname like #{bname}
        </if>
      </where>
  </select>
  <select id="list5" resultType="java.util.Map" parameterType="java.util.Map">
    select * from t_mvc_book
    <where>
      <if test="null != bid and bid !=''">
        and bid = #{bid}
      </if>
    </where>
  </select>
</mapper>

BookVo继承Book实体类

测试代码

代码语言:javascript
复制
 @Test
    public void list() {
        //返回resultMap但是使用list<T>
//        List<Book> books=this.bookService.List1();
        //返回的是resulttype使用list<T>接收
//        List<Book> books=this.bookService.List2();
//        for (Book b :books){
//            System.out.print(b);
//        }
        //返回的是resulttype 使用T接收
//        BookVo bookVo=new BookVo();
//        List list=new ArrayList();
//        list.add(5);
//        bookVo.setBookIds(list);
//        Book book=this.bookService.list3(bookVo);
//        System.out.print(book);
        //返回的是resultType,然后用list<map>进行接收
        Map map=new HashMap();
//        map.put("bname",StringUtils.toLikeStr("李四"));
//        List<Map> list=this.bookService.list4(map);
//        for (Map m :list){
//            System.out.print(m);
//        }
//        /返回的是resultType,然后用map进行接收
        map.put("bid",7);
        Map m=this.bookService.list5(map);
        System.out.print(m);

分页

为什么要重写mybatis的分页? Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录再按偏移量offset和边界limit取结果),在大数据量的情况下这样的分页基本上是没有用的

使用分页插件步奏 1、导入pom依赖 2、Mybatis.cfg.xml配置拦截器 3、使用PageHelper进行分页 4、处理分页结果 Pom依赖

代码语言:javascript
复制
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version>
</dependency>

Mybatis.cfg.xml配置拦截器

代码语言:javascript
复制
<plugins>
    <!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 -->
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
    </plugin>
</plugins>

Bookservice层

BookServiceImpl

测试:

运行:

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142086.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 动态sql
  • 模糊查询
  • 查询返回结果集的处理
  • 分页
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档