动态SQL以及告别顺序ID并获取

2023-11-18

首先数据库中的自增id会因为你的删除数据而发生断层

我们可以清空数据库数据和改变下一个自增来解决但都不能不通过操作就解决问题

下面我们通过一行代码获取长形字符串ID

package utils;

import java.util.UUID;
/**
 * @author:LeeGaki
 * @date:2022/1/7
 */
public class IDUtils {
    public static String getID(){
        return UUID.randomUUID().toString().replaceAll("-","");
    }
}

说动态sql之前提一下sql片段简化代码

可以定义sql标签给它一个id,将你的代码放进去 然后在sql中用include标签引用
<sql id="set-if">                             <set>    
      <if test="name!=null">                        <include refid="set-if"/>                     
          name=#{name}                        </set>
      </if>
      <if test="name==null">
          name=name
      </if>
</sql>

动态sql

所谓的动态sql其实本质还是sql语句,只是在执行sql语句的同时去执行一些逻辑代码。

where标签

if语句

where标签会匹配下面传入的sql语句 假如传入的sql语句是第一个条件自动去除and    
     <select id="getTea" resultType="pojo.Teacher" parameterType="map">
        select * from school.teacher
        <where>
            <if test="name != null">
                and school.teacher.name=#{name}
            </if>
        </where>
    </select>

测试类:

@Test
    public void getTea(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
        Map map = new HashMap();
        map.put("name","我");
        List<Teacher> tea = mapper.getTea(map);
        for (Teacher teacher : tea) {
            System.out.println(teacher);
        }
        sqlSession.close();
    }

choose语句

choose标签  只能选择其中一个  

    <select id="getTea" resultType="pojo.Teacher" parameterType="map">
        select * from school.teacher
       <where>
           <choose>
                <when test="name!=null">
                    name=#{name}
                </when>
                <otherwise>
                    id=#{id}
                </otherwise>
           </choose>
       </where>
    </select>

set标签

 name=name防止不输入set语句报错
  <update id="upTea" parameterType="map">
        update school.teacher
        <set>
            <if test="name!=null">
                name=#{name}
            </if>
            <if test="name==null">
                name=name
            </if>
        </set>
        where id = #{id}
    </update>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态SQL以及告别顺序ID并获取 的相关文章

  • 如何强制jar使用(或jar运行的jvm)utf-8而不是系统的默认编码

    我的Windows默认编码是GBK 而我的Eclipse完全是utf 8编码 因此 在我的 Eclipse 中运行良好的应用程序崩溃了 因为导出为 jar 文件时这些单词变得不可读 我必须在 bat 文件中写入以下行才能运行该应用程序 st
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • PostgreSQL WHERE 计数条件

    我在 PostgreSQL 中有以下查询 SELECT COUNT a log id AS overall count FROM Log as a License as b WHERE a license id 7 AND a licens
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • 删除优先级队列的尾部元素

    如何删除优先级队列的尾部元素 我正在尝试使用优先级队列实现波束搜索 一旦优先级队列已满 我想删除最后一个元素 优先级最低的元素 Thanks 没有简单的方法 将元素从原始元素复制到新元素 最后一个除外 PriorityQueue remov
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • 如何在 Postgresql 中将 GIST 或 GIN 索引与 hstore 列一起使用?

    我正在使用 postgresql 9 3 的 hstore 我正在尝试对 hstore 列使用索引就像文档所述 http www postgresql org docs 9 3 static hstore html 我的问题是索引似乎没有被
  • FileNotFoundException - Struts2 文件上传

    Strange FileNotFoundException使用Struts2上传文件时 这是 JSP 的一部分
  • 是否可以从 servlet 内部以编程方式设置请求上下文路径?

    这是一个特殊情况 我陷入了处理 企业 网络应用程序的困境 企业应用程序正在调用request getContext 并将其与另一个字符串进行比较 我发现我可以使用 getServletContext getContextPath 获取 se
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • Eclipse - 安装新的 JRE (Java SE 8 1.8.0)

    我正在尝试安装 Java 8 到目前为止我所做的 安装最新版本的 Eclipse 下载并安装 Java SE 运行时环境 8http www oracle com technetwork java javase downloads jre8
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 在 Oracle 中如何将多行组合成逗号分隔的列表? [复制]

    这个问题在这里已经有答案了 我有一个简单的查询 select from countries 结果如下 country name Albania Andorra Antigua 我想在一行中返回结果 如下所示 Albania Andorra
  • 使用 Java https 上传到 Imgur v3 错误

    我目前正在尝试使用他们当前的 API v3 上传到 imgur 但是我不断收到错误 错误 javax net ssl SSLException 证书中的主机名不匹配 api imgur com imgur com OR imgur com
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • 总结同一个 SQL 表上的两个条件

    给定一个 SQL 表 Transactions ID INT COMPANY ID INT STATUS INT where STATUS IN 0 1 表示免费交易并且STATUS IN 2 3 表示可计费交易 简单的 我希望 ANSI
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • Java集合的使用

    集合的使用 集合框架的概述 数组在存储多个数据的特点 数组在存储多个数据的缺点 Java 集合可分为 Collection 和 Map 两种体系 Collection接口 Map接口 Collection 接口的使用 说明 常用方法 案例一
  • java hashcode() 和equals()详解 以及set不能重复问题

    1 首先equals 和hashcode 这两个方法都是从object类中继承过来的 equals 方法在object类中定义如下 public boolean equals Object obj return this obj 很明显是对
  • Qt——用于表格QTableView的模型

    如果想使用表格来呈现数据 Qt提供了一个方便的部件QTableWidget 但是直接用它实现一些功能可能比较困难 这里将介绍一种强大 灵活的方式来操作表格 一 模型 视图架构 在这个架构中 模型用于存储数据 视图用于呈现数据 除此之外 还有
  • Windows Linux 子系统安装步骤

    准备 一 启用 适用于Linux的Windows子系统 功能 方法一 Win10搜索 控制面板 打开 选择 程序和功能 项 左上角 启用或关闭Windows功能 翻到最下方 选择 适用于Linux的Windows子系统 确定后按提示操作即可
  • VC++ CComboBox自绘阶段性总结

    在绘制列表框左侧的时候 本来说是采用的CImageList接口进行绘制 结果发现绘制后的图标不干净 有锯齿或者黑色背景存在 于是采用了GDI 来实现左侧图标的绘制 代码如下 GDI是完全可以通过图像处理彻底解决图标不干净问题的 之前文章有介
  • LeetCode 88 合并两个有序数组

    LeetCode 88 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你 合并 nums2 到 nums1 中 使合并后
  • 0基础学python——文件操作

    这一小节的内容主要是python的文件操作函数和相关内容 文件 就是把一些数据存放起来 可以让程序下一次执行的时候直接使用而不必重新制作一份 gt 文件类型 文本文件 以文字存储为主 读写均以 字符 为单位 二进制文件 以图形 声音 影像为
  • 解决python urllib3报错urllib3.exceptions.MaxRetryError xxx [SSL: CERTIFICATE_VERIFY_FAILED] xxx

    完整报错如下 urllib3 exceptions MaxRetryError HTTPSConnectionPool host xxxxx port 443 Max retries exceeded with url xxxxxxx Ca
  • platform总线、设备、驱动模型之led驱动实例

    在 Linux 2 6 的设备驱动模型中 关心总线 设备和驱动这 3 个实体 总线将设备和驱动绑定 在系统每注册一个设备的时候 会寻找与之匹配的驱动 相反的 在系统每注册一个驱动的时候 会寻找与之匹配的设备 而匹配由总线完成 注意 所谓的p
  • makefile脚本基本语法

    l Makefile脚本流程 Shell脚本 make命令和Makefile make命令是一个常用的编译命令 尤其在C C 开发中 make命令通过makefile文件中描述源程序之间的依赖关系进行自动编译 makefile文件是按照规定
  • npm install 安装失败,一直卡在sill idealTree buildDeps没有反应

    运行npm install 安装失灵 一直卡在sill idealTree buildDeps没有反应 网上其他的方法全试了一遍都不行 最后把npm降级就解决了 npm install npm 6 g
  • 【华为OD机试真题】学校的位置(python)100%通过率 超详细代码注释 代码优化

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 学校的位置 知识点数组贪心排序 时间限制 1s空间限制 256MB限定语言 不限 题目描述
  • 全球及中国网络剧行业十四五发展机遇及投资热点分析报告2021-2027年

    全球及中国网络剧行业十四五发展机遇及投资热点分析报告2021 2027年 HS HS HS HS HS HS HS HS HS HS HS HS 修订日期 2021年10月 搜索鸿晟信合研究院查看官网更多内容 第一章 网络剧相关概述 1 1
  • 4.17 symlink和readlink函数-符号链接

    一 symlink函数 symlink函数用于创建一个符号链接文件 函数原型 include
  • Ubuntu20.04 安装 NVIDIA 显卡驱动

    说明 本人使用的环境是Ubuntu20 04 GTX1060 安装步骤 1 安装驱动前一定要更新软件列表和安装必要软件 依赖 sudo apt get update 更新软件列表 sudo apt get install g sudo ap
  • Python--glob一个不错的查找目录及文件的库

    使用glob模块能够快速查找我们想要的目录和文件 当然OS也可以完成这样的操作 匹配0个或多个字符 匹配所有文件 目录 子目录和子目录里的文件 3 5版本新增 代匹配一个字符 匹配指定范围内的字符 如 0 9 匹配数字 a z 匹配小写字母
  • 所有的软件都值得用大模型重做一遍,你来做吗

    所有的软件都值得用大模型重新做一遍 这句话隔前两年是这样的 所有的互联网应用都可以用 Web3 来重做一遍 只不过主角变成了 LLM 大模型 Web3 褪去 大模型扛起重构世界的大旗 在 ChatGPT 出现之前 大模型早已存在 为什么只有
  • 机器人基础知识一

    1 六轴机器人中的六轴是什么 在实际生产中常用的6关节工业机器人有6个可活动的关节 轴 不同的工业机器人本体运动轴的定义也不同 用于保证末端执行器达到工作空间任意位置的轴被称为基本轴或主轴 用于实现末端执行器任意空间姿态的轴 则称为腕部轴或
  • HttpCanary实战教程

    1 基础教程 HttpCanary实战教程 Sendige 博客园 cnblogs com 2 安卓11 12使用HttpCanary抓包https教程 AE博客 墨渊 aeink com 3 HttpCanary使用指南 各种神奇的插件
  • 动态SQL以及告别顺序ID并获取

    首先数据库中的自增id会因为你的删除数据而发生断层 我们可以清空数据库数据和改变下一个自增来解决但都不能不通过操作就解决问题 下面我们通过一行代码获取长形字符串ID package utils import java util UUID a