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://www.mzph.cn/news/777756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Intellij IDEA安装配置Spark与运行

目录 Scala配置教程 配置Spark运行环境 编写Spark程序 1、包和导入 2、定义对象 3、主函数 4、创建Spark配置和上下文 5、定义输入文件路径 6、单词计数逻辑 7、输出结果 8、完整代码&#xff1a; Scala配置教程 IDEA配置Scala&#xff1a;教程 配置Spark运行环境 …

RabbitMQ3.x之五_RabbitMQ中的核心概念

RabbitMQ3.x之五_RabbitMQ中的核心概念 文章目录 RabbitMQ3.x之五_RabbitMQ中的核心概念1. RabbitMQ简介1. 可互操作2. 灵活3. 可靠 2. 核心概念1. Message(消息)2. Publisher(生产者)3. Consumer(消费者)4. Exchange(交换机)5. Queue(队列)6. Binding(绑定)7. Routing-Key(路由…

关于举办第十五届蓝桥杯全国软件和信息技术专业人才大赛——数字科技创新赛的通知

各相关院校&#xff1a; 为贯彻落实党的二十大报告&#xff0c;加快发展数字经济&#xff0c;促进数字经济和实体经济深度融合&#xff0c;打造具有国际竞争力的数字产业集群的有关精神&#xff0c;工业和信息化部人才交流中心决定举办第十五届蓝桥杯大赛——数字科技创新赛&a…

Untiy 布局控制器Aspect Ratio Fitter

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

自然语言处理(NLP)全面指南

自然语言处理&#xff08;NLP&#xff09;是人工智能领域中最热门的技术之一&#xff0c;它通过构建能够理解和生成人类语言的机器&#xff0c;正在不断推动技术的发展。本文将为您提供NLP的全面介绍&#xff0c;包括其定义、重要性、应用场景、工作原理以及面临的挑战和争议。…

Python图像处理——计算机视觉中常用的图像预处理

概述 在计算机视觉项目中&#xff0c;使用样本时经常会遇到图像样本不统一的问题&#xff0c;比如图像质量&#xff0c;并非所有的图像都具有相同的质量水平。在开始训练模型或运行算法之前&#xff0c;通常需要对图像进行预处理&#xff0c;以确保获得最佳的结果。图像预处理…

#AS,idea,maven,gradle

Jdk,sdk。提前都是需要下好的。 Maven与gradle的思考&#xff1a; 用AS开发app时&#xff0c;gradle本就有&#xff0c;自己也可以指定&#xff0c;AGP同样。要注意gradle&#xff0c;AGP,jdk版本的事情。还有依赖库。 用idea开发网络程序时&#xff0c;也有内置的maven&…

typescript 实现RabbitMQ死信队列和延迟队列 订单10分钟未付归还库存

Manjaro安装RabbitMQ 安装 sudo pacman -S rabbitmq rabbitmqadmin启动管理模块 sudo rabbitmq-plugins enable rabbitmq_managementsudo rabbitmq-server管理界面 http://127.0.0.1:15672/ 默认用户名和密码都是guest。 要使用 rabbitmqctl 命令添加用户并分配权限&#xf…

怎样去保证 Redis 缓存与数据库双写一致性?

解决方案 那么我们这里列出来所有策略&#xff0c;并且讨论他们优劣性。 先更新数据库&#xff0c;后更新缓存先更新数据库&#xff0c;后删除缓存先更新缓存&#xff0c;后更新数据库先删除缓存&#xff0c;后更新数据库 先更新数据库&#xff0c;后更新缓存 这种方法是不推…

在scroll-view中使用input,input键盘弹出时,滚动页面,输入框内容会出现错位问题?

解决办法 <view classpages><view><scroll-view scroll-y"{{sysScroll}}" scroll-top"{{scrollTop}}" class"scroll-hei-2 bg-def">...<input bindfocus"onfocus" bindblur"onblur" placeholder&quo…

RestTemplate 请求响应数据出现乱码问题,RestTemplate 如何解压缩 gzip 数据

文章目录 1.问题描述2.问题分析3.问题解决3.1 Apache HttpClient 依赖3.2 RestTemplate 配置类3.3 测试 1.问题描述 直接通过浏览器访问请求没有问题&#xff0c;但是通过 RestTemplate 访问请求却会出现乱码问题。 2.问题分析 首先我认为是 SpringBoot 版本、JDK 版本、项目结…

HTTP——Cookie

HTTP——Cookie 什么是Cookie通过Cookie访问网站 我们之前了解了HTTP协议&#xff0c;如果还有小伙伴还不清楚HTTP协议&#xff0c;可以点击这里&#xff1a; https://blog.csdn.net/qq_67693066/article/details/136895597 我们今天来稍微了解一下HTTP里面一个很小的部分&…

OpenHarmony中的LLDB高性能调试器

概述 LLDB&#xff08;Low Lever Debugger&#xff09;是新一代高性能调试器。详细说明参考 LLDB官方文档 。 当前OpenHarmony中的LLDB工具是在 llvm15.0.4 基础上适配演进出来的工具&#xff0c;是HUAWEI DevEco Studio工具中默认的调试器&#xff0c;支持调试C和C应用。 工…

主流后端开发语言:JAVA、C、C++、GO、PYTHON对比

软件开发领域&#xff0c;语言本身在各自领域都有适用场景&#xff0c;有许多流行的编程语言可供选择&#xff0c;每种语言都有其独特的特点和适用场景。 Java、C、C、Go 和 Python 这五种主流编程语言&#xff0c;从底层实现、效率、原理、国内外市场占有率、社区活跃度以及开…

【直播课】2024年PostgreSQL CM认证实战培训课程于4月27日开课!

课程介绍 了解关注开源技术&#xff0c;学习PG以点带面 Linux/Andriod&#xff08;操作系统&#xff09;、Apache/Tomcat&#xff08;应用服务器&#xff09;、OpenStack/KVM&#xff08;虚拟化&#xff09;、Docker/K8S&#xff08;容器化&#xff09;、Hadoop&#xff08;大…

postcss安装和使用

要安装和使用 PostCSS&#xff0c;你可以按照以下步骤操作&#xff1a; 步骤一&#xff1a;安装 PostCSS 在项目目录下&#xff0c;通过 npm 初始化一个新的 package.json 文件&#xff08;如果还没有&#xff09;&#xff1a; npm init -y 安装 PostCSS 和必要的插件&#x…

IoTeX(IOTX) 推出首个DEPIN数据平台,蓝筹项目合作进入新时代。

首先来了解一下什么是IoTeX(IOTX) 2024年1月25日&#xff0c;作为由IoTeX驱动的首个DEPIN类别优先数据平台&#xff0c;与蓝筹DePIN项目Helium、Akash、Theta、DIMO、Pocket、Drife、WiFi Map和Streamr合作推出。这一官方发布标志着DePIN&#xff08;去中心化物理基础设施网络&…

西门子 S7-200 SMART 系列十三:实例详解用s7-200 smart 向导配置PID回路参数设定

原文链接&#xff1a;西门子 S7-200 SMART 系列十三&#xff1a;实例详解用s7-200 smart 向导配置PID回路&参数设定 在往期文章中介绍了s7-200 smart的通讯应用&#xff0c;Modbus RTU&#xff0c;S7通信&#xff0c;Profinet通信&#xff0c;TCP通信等&#xff0c;基本包含…

代码学习记录29----贪心最后一天

随想录日记part29 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.03.28 主要内容&#xff1a;今天是学习贪心算法最后一天&#xff0c;接下来是针对题目的讲解&#xff1a;1.单调递增的数字;2.监控二叉树; 3. 总结 738.单调递增的数字 968.监控二叉树 总结 To…

sql造数据

造一行常量数据SQL select “col1”,“col2”,“col3” 造多行多列 select concat(AAA, :, "BBB", _PP, :, "XXXXX") as key1,concat({"Id":","12323213",","url":","http://helloworld.com/hello.…