Mybatis别名 动态sql语句 分页查询

给Mybatis的实体类起别名

给Mybatis的xml文件注册mapper映射文件

动态sql语句

        1 if

        2 choose

         3 where

        4 foreach

一)if

        查询指定名称商品信息

        语法:

        SELECT * FROM goods     

        where  1=1

                <if test ="gName!=null">

                and g.g_name like concat('%',#{gName},'%')

                </if>

         test中添加判断条件,结果为true内容拼接到where语句中。

         test中形参不用加#{}

         注意没有if else,但可以使用多个if并列,但每个if都要判断拼接

二)choose:从多个分支中选择一个执行 等同if else

        语法:

       SELECT * FROM goods

        where 1=1

         <choose>

        <when test = "gName!=null">

                and g.gname like concat('%',#{gName},'%')

        </when>

        <when test = "gPrice!=null">

                and  g.gPrice<=#{gPrice}

        </when>

        </choose>

        choose语句只会选择唯一一个执行,谁先满足条件先执行谁

        没有满足条件的可以添加<otherwise></otherwise>标签执行拼接内部sql语句。

三)where标签 --->trim(自适应where标签,可以自定义删除关键词)

        语法

        where元素只会在子元素返回任何内容情况下才插入<where>标签

        只有在子元素(如 <if> 标签)返回了具体的内容或结果时,才会在生成的 SQL 中插入 <where> 标签及其内容

        拼接的sql语句开头有and  or  ,where标签也会正确的去除

       SELECT * FROM user

<where>

        <if test="id != null">

                AND id = #{id}

        </if>

        <if test="name != null">

                AND name = #{name}

        </if>

</where>

四)foreach

<delete id="deleteByList">
    delete from goods
    where g_id in
          <foreach item="item" collection="list"
              open = "(" separator="," close=")">
          #{item}
          </foreach>
</delete>

list为传入的形参,

所以在对应mapper接口方法形参为List类型的list

或者写成@Param("list") List list

<delete id="deleteByArray">
    delete from goods
    where g_id in
          <foreach item="item" index="index" collection="array"
              open = "(" separator="," close=")">
          #{item}
          </foreach>
</delete>

Array为传入的形参,

所以在对应mapper接口方法形参为Integer [] 类型的array

或者写成@Param("array") Integer [] array

 分页查询

        1在sql语句中添加limit关键词

                主要数据:pageIndex:当前页码,pageCount:每页的数量

select *
from goods
limit #{index},#{count}

         使用pagehelper的jar工具包进行分页查询

 

            GoodsMapper mapper = SqlSessionUtil.getMapper(GoodsMapper.class);
            PageHelper.startPage(index, count,true,true,true);
            List<Goods> goodsList = mapper.getAll();
            PageInfo<Goods> goodsPageInfo = new PageInfo<>(goodsList);
            SqlSessionUtil.commitSession();
            PageInfo<Goods> goodsByPage = goodsService.getGoodsByPage(1, 3);

        int pages = goodsByPage.getPages();
        long total = goodsByPage.getTotal();
        int pageNum = goodsByPage.getPageNum();
        int size = goodsByPage.getSize();

        System.out.println("总页数"+pages);
        System.out.println("总记录数据条数"+total);
        System.out.println("第几页"+pageNum);
        System.out.println("当前页记录数据数"+size);
           

 pagehelper的几种重载方法

  startPage(int pageNum, int pageSize)
  startPage(int pageNum, int pageSize, boolean count)
  startPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero) 
  startPage(int pageNum, int pageSize, String orderBy)

  1. startPage(int pageNum, int pageSize): 这个方法指定了要查询的页数和每页的数据量。它用于简单的分页查询。

  2. startPage(int pageNum, int pageSize, boolean count): 这个方法在第二个参数的基础上增加了一个 boolean 类型的参数,用于指示是否进行 count 查询。count 查询是为了获取总记录数,以便于计算总页数。如果传入 true,则会进行 count 查询;如果传入 false,则不进行 count 查询。

  3. startPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero): 这个方法除了包含前两个参数外,还可以指定是否启用 "reasonable" 和 "pageSizeZero" 的设置。reasonable 设置表示是否启用合理化参数,默认为 false,表示不启用;pageSizeZero 表示当 pageSize 为 0 时是否返回全部结果,默认为 false,表示不返回全部结果。

  4. startPage(int pageNum, int pageSize, String orderBy): 这个方法还包含一个 orderBy 参数,用于指定结果集的排序方式。orderBy 参数是一个字符串,表示按照哪个字段进行排序,可以包含 ASC(升序)或 DESC(降序)等排序规则。

相关推荐

  1. MyBatis-Plus实现自定义SQL语句查询

    2024-03-29 05:30:05       47 阅读
  2. sql查询

    2024-03-29 05:30:05       9 阅读
  3. MyBatis-Plus】查询

    2024-03-29 05:30:05       45 阅读
  4. mybatis&Mysql 查询

    2024-03-29 05:30:05       39 阅读
  5. MyBatis动态SQL语句

    2024-03-29 05:30:05       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 05:30:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 05:30:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 05:30:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 05:30:05       20 阅读

热门阅读

  1. 利用图像识别进行疾病诊断

    2024-03-29 05:30:05       16 阅读
  2. 组件上使用 v-for

    2024-03-29 05:30:05       19 阅读
  3. 前端a4纸尺寸转像素尺寸

    2024-03-29 05:30:05       22 阅读
  4. 浪潮 M5系列服务器IPMI无法监控存储RAID卡问题.

    2024-03-29 05:30:05       40 阅读
  5. Golang基础-5

    2024-03-29 05:30:05       18 阅读
  6. C++之struct和class区别

    2024-03-29 05:30:05       21 阅读
  7. 10.windows ubuntu 组装软件:spades,megahit

    2024-03-29 05:30:05       15 阅读
  8. Ubuntu下显卡超频和提高功耗方式

    2024-03-29 05:30:05       23 阅读