当前位置: 首页 > news >正文

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

相关文章:

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

给Mybatis的实体类起别名 给Mybatis的xml文件注册mapper映射文件 动态sql语句 1 if 2 choose 3 where 4 foreach 一&#xff09;if 查询指定名称商品信息 语法&#xff1a; SELECT * FROM goods where 11 <if test "gName!null"> and g.g_name like co…...

【算法题】三道题理解算法思想--滑动窗口篇

滑动窗口 本篇文章中会带大家从零基础到学会利用滑动窗口的思想解决算法题&#xff0c;我从力扣上筛选了三道题&#xff0c;难度由浅到深&#xff0c;会附上题目链接以及算法原理和解题代码&#xff0c;希望大家能坚持看完&#xff0c;绝对能有收获&#xff0c;大家有更好的思…...

go env 命令详解

文章目录 1.简介2.格式3.示例4.环境变量参考文献 1.简介 go env 用于查看和设置 Go 环境变量。 默认情况下 go env 输出格式为 Shell 脚本格式&#xff08;如 Windows 上是 batch 文件格式&#xff09;。如果指定变量名称&#xff0c;则只输出变量的值。 2.格式 go env [-j…...

flutter 单例模式

总的思想就是&#xff1a; 确保整个应用程序中只有一个 TranslationService 实例。 避免重复创建相同的实例,节省资源。 为整个应用程序提供一个全局访问点,方便在不同地方使用同一个实例。 1.类创建个实例 2.然后用构造函数赋值给实例 3.其他地方调用时返回实例 import pack…...

1.7.2 python练习题15道

1、求出1 / 1 1 / 3 1 / 5……1 / 99的和 (1分之一1分之三1分支5....) 2、用循环语句&#xff0c;计算2 - 10之间整数的循环相乘的值 &#xff08;2*3*4*5....10) 3、用for循环打印九九乘法表 4、求每个字符串中字符出现的个数如&#xff1a;helloworld 5、实现把字符串str …...

python如何获取word文档的总页数

最近在搞AI. 遇到了一个问题&#xff0c;就是要进行doc文档的解析。并且需要展示每个文档的总页数。 利用AI. 分别尝试了chatGPT, 文心一言&#xff0c; github copilot&#xff0c;Kimi 等工具&#xff0c;给出来的答案都不尽如人意。 给的最多的查询方式就是下面这种。 这个…...

python解压RAR文件

本文使用创作助手。 要在Python中解压RAR文件&#xff0c;你可以使用第三方库rarfile。以下是一个示例代码&#xff0c;演示如何解压RAR文件&#xff1a; 首先&#xff0c;你需要安装 rarfile 库。你可以使用以下命令进行安装&#xff1a; pip install rarfile然后&#xff…...

灯哥驱动器端口讲解----foc电机驱动必看

CS:是电流采样的引脚&#xff0c;三项采样电流&#xff0c;现在只给了两路&#xff0c;另外一路算出来就行了 in:三项电流输入&#xff0c;驱动电机使用。 en:没有用 SDA,SCL&#xff1a;I2C的引脚用来读取编码器的计数值 tx,rx&#xff1a;引出来了一路串口&#xff0c;没有用…...

lua 获取指定路径下的所有文件夹

一、io.popen 函数获取 io.popen 是 Lua 中的一个函数&#xff0c;它允许你执行一个外部命令并将命令的输出作为流处理。如果你想在 Lua 中通过 io.popen 执行 dir 命令(linux 命令是ls )来获取指定文件夹下的所有文件及其路径&#xff0c;你可以构造一个适用于 Windows 环境下…...

#Linux(SSH软件安装及简单使用)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;终端键入&#xff08;root权限&#xff09;安装 apt-get install openssh-server 安装时遇到报错 E: Could not get lock /var/lib/dpkg/…...

Android中运动事件的处理

1.目录 目录 1.目录 2.前言 3.程序演示 4.第二种程序示例 5.扩展 2.前言 触摸屏&#xff08;TouchScreen&#xff09;和滚动球&#xff08;TrackBall&#xff09;是 Android 中除了键盘之外的主要输入设备。如果需要使用触摸屏和滚动球&#xff0c;主要可以通过使用运动事…...

【网安小白成长之路】3.MySQL环境配置以及常用命令(增删改查)

&#x1f42e;博主syst1m 带你 acquire knowledge&#xff01; ✨博客首页——syst1m的博客&#x1f498; &#x1f51e; 《网安小白成长之路(我要变成大佬&#x1f60e;&#xff01;&#xff01;)》真实小白学习历程&#xff0c;手把手带你一起从入门到入狱&#x1f6ad; &…...

【QGIS从shp文件中筛选目标区域导出为shp】

文章目录 1、写在前面2、QGIS将shp文件中目标区域输出为shp2.1、手动点选2.2、高级过滤 3、上述shp完成后&#xff0c;配合python的shp文件&#xff0c;即可凸显研究区域了 1、写在前面 利用shp文件制作研究区域mask&#xff0c;Matlab版本&#xff0c;请点击 Matlab利用shp文…...

react native hooks 如何避免重复请求

在React Native中使用Hooks时&#xff0c;为了避免重复发送网络请求&#xff0c;你可以采取以下几个方法&#xff1a; 使用 useRef 存储最新请求标识或结果&#xff1a; 可以创建一个 useRef 用来存储上一次请求的标识&#xff08;如请求的URL加上请求参数的哈希值&#xff09;…...

【任职资格】某大型制造型企业任职资格体系项目纪实

该企业以业绩、责任、能力为导向&#xff0c;确定了分层分类的整体薪酬模式&#xff0c;但是每一名员工到底应该拿多少工资&#xff0c;同一个岗位的人员是否应该拿同样的工资是管理人员比较头疼的事情。华恒智信顾问认为&#xff0c;通过任职资格评价能实现真正的人岗匹配&…...

线程安全问题及解决

1.前言 当我们使用多个线程访问同一资源时(可以是同一变量&#xff0c;同一文件&#xff0c;同一条记录)&#xff0c;若多个线程只要只读操作&#xff0c;则不会发生线程安全问题;如果多个线程既有可读又有可写操作时&#xff0c;将可能导致线程安全问题. 2.提出问题 例 : 三个…...

Excel·VBA数组平均分组问题

看到一个帖子《excel吧-数据分组问题》&#xff0c;对一组数据分成4组&#xff0c;使每组的和值相近 上一篇文章《ExcelVBA数组分组问题》&#xff0c;解决了这个帖子问题的第1步&#xff0c;即获取所有数组分组形式的问题 接下来要获取分组和值最相近的一组&#xff0c;只需计…...

高防服务器、高防IP、高防CDN的工作原理是什么

高防IP高防CDN我们先科普一下是什么是高防。“高防”&#xff0c;顾名思义&#xff0c;就犹如网络上加了类似像盾牌一样很高的防御&#xff0c;主要是指IDC领域的IDC机房或者线路有防御DDOS能力。 高防服务器主要是比普通服务器多了防御服务&#xff0c;一般都是在机房出口架设…...

【Flask开发实战】安装mysql数据库与配置连接

1、安装mysql 通过yum方式安装MySQL服务器&#xff1a; sudo yum install mysql-server 在安装过程中&#xff0c;系统可能会要求确认安装。按下Y键并按回车键继续。 安装完成后&#xff0c;MySQL服务器应已自动启动。可以使用以下命令查看和启动MySQL服务&#xff1a; sudo…...

Java项目:79 springboot海滨体育馆管理系统的设计与实现

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 体育馆管理系统主要实现了管理员功能模块和学生功能模块两大部分 管理员功能模块&#xff1a; 管理员登录后可对系统进行全面管理操作&#xff0c;包…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...