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 goodswhere 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 goodswhere 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(降序)等排序规则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2904768.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

数字孪生关键技术及体系架构

摘要&#xff1a; 数字孪生以各领域日益庞大的数据为基本要素&#xff0c;借助发展迅速的建模仿真、人工智能、虚拟现实等先进技术&#xff0c;构建物理实体在虚拟空间中的数字孪生体&#xff0c;实现对物理实体的数字化管控与优化&#xff0c;开拓了企业数字化转型的可行思路…

【Effective Web】页面优化

页面优化 页面渲染流程 JavaScript 》 Style 》 Layout 》 Paint 》 Composite 首先js做了一些逻辑&#xff0c;触发了样式变化&#xff0c;style计算好这些变化后&#xff0c;把影响的dom元素进行重新布局&#xff08;layout&#xff09;,再画到画布中&#xff08;Paint&am…

Untiy 布局控制器Aspect Ratio Fitter

Aspect Ratio Fitter是Unity中的一种布局控制器组件&#xff0c;用于根据指定的宽高比来调整包含它的UI元素的大小。实际开发中&#xff0c;它可以确保UI元素保持特定的宽高比&#xff0c;无论UI元素的内容或父容器的大小如何变化。 如图为Aspect Ratio Fitter组件的基本属性&…

纯分享万岳外卖跑腿系统客户端源码uniapp目录结构示意图

系统买的是商业版&#xff0c;使用非常不错有三端uniapp开源代码&#xff0c;自从上次分享uniapp后有些网友让我分享下各个端的uniapp下的各个目录结构说明 我就截图说以下吧&#xff0c;

AI预测福彩3D第20弹【2024年3月28日预测--第5套算法开始计算第2次测试】

今天&#xff0c;咱们继续进行本套算法的测试&#xff0c;今天为第二次测试&#xff0c;仍旧是采用冷温热趋势结合AI模型进行预测。好了&#xff0c;废话不多说了。直接上结果~ 仍旧是分为两个方案&#xff0c;1大1小。 经过人工神经网络计算并进行权重赋值打分后&#xff0c;3…

探索数据库mysql--------------mysql主从复制和读写分离

目录 前言 为什么要主从复制&#xff1f; 主从复制谁复制谁&#xff1f; 数据放在什么地方&#xff1f; 一、mysql支持的复制类型 1.1STATEMENT&#xff1a;基于语句的复制 1.2ROW&#xff1a;基于行的复制 1.3MIXED&#xff1a;混合类型的复制 二、主从复制的工作过程 三个重…

Java八股文(数据结构)

Java八股文の数据结构 数据结构 数据结构 请解释以下数据结构的概念&#xff1a;链表、栈、队列和树。 链表是一种线性数据结构&#xff0c;由节点组成&#xff0c;每个节点包含了指向下一个节点的指针&#xff1b; 栈是一种后进先出&#xff08;LIFO&#xff09;的数据结构&a…

Ubuntu18.04安装wireshark

安装wireshark 环境Ubuntu18.04 1.使用root用户进行安装 2.将 wireshark-dev/stable PPA 添加到系统的软件源列表中。系统就可以从该PPA获取Wireshark软件包及其更新了。 apt-add-repository ppa:wireshark-dev/stable3.确保你系统上的软件包信息是最新的&#xff0c;这样在…

报表控件Stimulsoft Reports、Dashboards 和 Forms 新版v2024.2发布!

我们很高兴地宣布发布用于创建报告、仪表板和表单的最新版本的 Stimulsoft 产品 - 2024.2&#xff01;在此更新中&#xff0c;您将找到适用于 Python 应用程序和服务的产品、新的仪表板元素、我们的组件与 .NET 8.0 的兼容性、仪表板交互性的增强功能等等。 Stimulsoft Ultima…

机器学习优化算法(深度学习)

目录 预备知识 梯度 Hessian 矩阵&#xff08;海森矩阵&#xff0c;或者黑塞矩阵&#xff09; 拉格朗日中值定理 柯西中值定理 泰勒公式 黑塞矩阵&#xff08;Hessian矩阵&#xff09; Jacobi 矩阵 优化方法 梯度下降法&#xff08;Gradient Descent&#xff09; 随机…

Elasticsearch 向量搜索

目标记录 ["你好&#xff0c;我的爱人","你好&#xff0c;我的爱妻","你好&#xff0c;我的病人","世界真美丽"] 搜索词 爱人 预期返回 ["你好&#xff0c;我的爱人","你好&#xff0c;我的爱妻"] 示例代码…

构建一个基础的大型语言模型(LLM)应用程序

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

解码“零信任”,如何带来信任感?

零信任的“信任”来源&#xff0c;并非凭空而生&#xff0c;而是建立在严格、细致且持续的验证、策略之上。它不仅能够提升企业的安全防护能力&#xff0c;也在加速安全技术的创新与演进。 推动创新 零信任理念激活网络安全 身份和访问管理革新。零信任理念“永不信任&#…

【文本】正则 | 正则表达式收录

1、匹配数字加右括号 1&#xff09;正则 \d\) 2&#xff09;效果 ~~

【1】网络协议基础概念

【1】网络协议基础知识 1、互联网2、为什么要学习网络协议3、学习中需要搭建的环境4、客户端-服务器5、Java 的跨平台原理6、C/C的跨平台原理7、一个简单的SpringBoot项目(1) pom.xml(2) application.yml(3) NetworkStudyApp.java(4) SwaggerConfig.java(5) HelloWorldControll…

如何创建纯净版Django项目并启动?——让Django更加简洁

目录 1. Django的基本目录结构 2. 创建APP 2.1 创建app 2.2 配置文件介绍 3. 迁移数据库文件 3.2 连接数据库 3.1 创建迁移文件 3.2 同步数据库 4. 纯净版Django创建 4.1 剔除APP 4.2 剔除中间件 4.3 剔除模板引擎 5. 最终 1. Django的基本目录结构 在我们创建Django项…

Scala第十三章节(作为值的函数及匿名函数、柯里化、闭包及控制抽象以及计算器案例)

章节目标 掌握作为值的函数及匿名函数的用法了解柯里化的用法掌握闭包及控制抽象的用法掌握计算器案例 1.高阶函数介绍 Scala 混合了面向对象和函数式的特性&#xff0c;在函数式编程语言中&#xff0c;函数是“头等公民”&#xff0c;它和Int、String、Class等其他 类型处于…

图像处理与视觉感知---期末复习重点(5)

文章目录 一、膨胀与腐蚀1.1 膨胀1.2 腐蚀 二、开操作与闭操作 一、膨胀与腐蚀 1.1 膨胀 1. 集合 A A A 被集合 B B B 膨胀&#xff0c;定义式如下。其中集合 B B B 也称为结构元素&#xff1b; ( B ^ ) z (\hat{B})z (B^)z 表示 B B B 的反射平移 z z z 后得到的新集合。…

Maven配置国内镜像-阿里云仓库镜像

使用自己安装maven环境时&#xff1a; 打开解压目录下conf/settings.xml文件 使用Idea自带的Maven时&#xff1a; 打开Idea安装路径\plugins\maven\lib\maven3\conf\settings.xml文件 在mirrors节点中加入如下配置&#xff1a; <!-- 加入如下mirror节点 使用国内阿里云仓…

Unity | 射线检测及EventSystem总结

目录 一、知识概述 1.Input.mousePosition 2.Camera.ScreenToWorldPoint 3.Camera.ScreenPointToRay 4.Physics2D.Raycast 二、射线相关 1.3D&#xff08;包括UI&#xff09;、射线与ScreenPointToRay 2.3D&#xff08;包括UI&#xff09;、射线与ScreenToWorldPoint …