MyBatis中-转义-循环-判断-返回

2023-11-03

官方中文文档地址:

http://www.mybatis.org/mybatis-3/zh/getting-started.html

 

1、在Mybatis mapping.xml映射配置文件中使用大于>号小于号<

XML文件会在解析XML时将5种特殊字符进行转义,分别是&, <, >, “, ‘, 我们不希望语法被转义,就需要进行特别处理。箭头哪边就是左和右

< &lt; 小于号
> &gt; 大于号
& &amp;
' &quot; 单引号
" &apos; 双引号

 第一种使用转义符号:

SELECT * FROM test 
WHERE 1 = 1 AND A  &lt;= 12 AND A &gt;= 23
<!--等同于 when A<=12 and A>=23 -->

第二种使用<![CDATA[ ]]>标签:推荐使用<![CDATA[ ]]>,清晰,简洁

SELECT * FROM test 
WHERE 1 = 1 AND A  &lt;= 12 AND A &gt;= 23
<!--等同于 -->
when A <![CDATA[<= ]] 12 and <![CDATA[>= ]] 23

在CDATA内部的所有内容都会被解析器忽略,保持原貌。所以在Mybatis配置文件中,要尽量缩小 <![CDATA[ ]]>
的作用范围,来避免
<if test=""> </if> <where> </where> 等sql标签无法解析的问题。

2.Mybatis中使用OGNL表达式test比较字符串

Mybatis映射配置文件中,使用OGNL表达式test的时候,比较字符串时,需要调用 toString()方法保证 == 两边的值都是 String 类型。

<!-- 以下为错误写法,会抛NumberFormatException异常 -->
<if test="username == 'U'">

<!-- 正确写法如下两种 字符串必须用双引号判断,不可以用单引号-->
<if test="username == 'U'.toString()">
<if test='username == "U"'>

3、Mybatis实现WHERE IN查询

WHERE IN查询中,IN的参数是一个列表,需要传送一个列表参数,使用 foreach 实现。

<select id="selectTestByIds" resultType="demo">
 SELECT * FROM Test t
 WHERE ID in
 <foreach item="item" index="index" collection="list"  open="(" separator="," close=")">
    #{item}
 </foreach>
</select>

当使用可迭代对象或者数组时,index是当前迭代的次数,item的值是本次迭代获取的元素。当使用字典(或者Map.Entry对象的集合)时,index是键,item是值。

你可以将任何可迭代对象(如列表、集合等)和任何的字典或者数组对象传递给foreach作为集合参数。

4.Mybatis插入数据的时候返回插入记录的主键id

在进行输入库插入的时候,如果我们需要使用已经插入的记录的主键,则需要返回刚才插入的数据的主键id。

通过设置 insert 标签的 useGeneratedKeys 属性为 true 可以返回插入的记录的主键的id。

<insert id="User" useGeneratedKeys="true" keyProperty="id"> </insert>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis中-转义-循环-判断-返回 的相关文章

  • 对不同记录进行 PIVOT 查询

    我有下表 Id Code percentage name name1 activity 1 Prashant 43 43 James James Running 1 Prashant 70 43 Sam Sam Cooking 1 Pras
  • SQL 外键引用

    Does FOREIGN KEY a REFERENCES A a FOREIGN KEY b REFERENCES A b 与以下含义相同 FOREIGN KEY a b REFERENCES A a b No 有两个references
  • 错误 1364 (HY000):字段“MY_DATE”没有默认值

    create table MYTABLE MY DATE int NOT NULL AUTO INCREMENT NAME varchar 255 NOT NULL UNIQUE INSERT INTO MYTABLE NAME value
  • Template_searchpath 在 Airflow 中给出 TemplateNotFound 错误并且找不到 SQL 脚本

    我有一个这样描述的 DAG tmpl search path home airflow gcs sql requests with DAG dag id pipeline default args default args template
  • JDBC 插入错误

    我正在尝试使用 jdbc 将一些数据插入到我的数据库中 我使用了正确的表 数据库名称和参数 一切都经过检查 Code public static void main String args throws IOException ClassN
  • SQL 中最有效的搜索方式?

    我有一个包含 75 000 多行的数据库 每天添加 500 多个条目 每行都有一个标题和说明 我创建了一个 RSS 提要 它为您提供特定搜索词的最新条目 例如http site com rss rss q 披萨 http site com
  • MySQL - 将字段的默认值设置为字符串连接函数

    我有一个看起来有点像这个的表 actor forename surname stage name 我想将 stage name 更新为默认值 forename surname So that insert into actors foren
  • 执行计划中是否考虑了功能?

    当查询在 SELECT 或 WHERE 子句中包含 PL SQL 函数 用户定义函数 时 如何生成执行计划 它是否也计算这些函数的成本并将其显示在执行计划中 或者这些函数只是被忽略 在此先感谢您的帮助 用户生成的函数在 SELECT 或 W
  • 将记录与另一个表上的最新记录连接

    我正在尝试创建一个 SQL 视图 我如何从一个表中选择最新的记录 而其他记录保持原样 我需要从所有表中选择所有记录 这工作正常 但我需要仅按日期选择最新的提案 这是我遇到的问题 这是我到目前为止所拥有的 SELECT TOP 100 PER
  • 选择语句REF oracle

    我需要一些帮助来创建将使用引用的选择语句 我设法很好地插入了值 但是当我尝试使用 where 语句提取值时 输出要么是数据类型错误 要么会输出两个表以及它们都包含的数据 这只是一个例子 Create or replace table1 Ty
  • 在 SQL 中查询行序列

    假设我正在存储events有关联users如下表 其中dt代表事件的时间戳 dt user event 1 1 A 2 1 D 3 1 B 4 1 C 5 1 B 6 2 B 7 2 B 8 2 A 9 2 A 10 2 C 这样我们就可以
  • SQL Server到Mysql迁移(使用Mysql Workbench)数据传输错误

    我正在使用 Mysql Work bench 6 3 将数据库从 MS Sql server 2008 迁移到 Mysql 在 批量数据传输 期间出错并出现以下警告 这种情况仅发生在像 varchar char 这样的列类型上 当我尝试使用
  • 如何使用 pgAdmin 恢复 postgreSQL 转储文件?

    我有一个 dmp 文件 想要从中恢复数据库 使用 pgAdmin 我该怎么做 在 PgAdmin3 内 在您正在使用的服务器中创建一个新数据库 右键单击该数据库并选择 恢复 使用 浏览器 按钮选择 dmp 文件 选择 恢复 开始恢复数据库
  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • 使用 sql 查询选择最近 30 天

    我正在查找过去 30 天内周一 周二 周三 周四 周五 周六 周日的数量 我可以在没有实际数据库表的情况下选择最近 30 天的日期和星期几吗 就像是 SELECT everything between convert date GETDAT
  • 如何在 SQL 中编写 where 子句来按一天中的时间过滤 DATETIME 列?

    我有带有 DATETIME 列时间戳的数据 我想将其过滤到 DATETIME 介于上午 9 30 到下午 5 30 之间的任意一天的记录集 最好的方法是什么 更新 更改是因为我需要精确到分钟 而不仅仅是小时 对于那个很抱歉 您始终可以将其编
  • SQL Server:比较两个表中的列

    我最近完成了从某些应用程序的旧版本到当前版本的迁移 在迁移数据库时遇到了一些问题 我需要一个可以帮助我比较两个表中的列的查询 我的意思不是行中的数据 我需要比较列本身来弄清楚我错过了表结构的哪些变化 看一下红门 SQL 比较 http ww
  • 对时间序列数据重新采样

    我有一个以毫秒为单位的时间序列列表 我想对时间序列进行重新采样并对组应用平均值 我如何在 Postgres 中实现它 重新采样 是指聚合一秒或一分钟内的所有时间戳 一秒或一分钟内的所有行形成一组 表结构 date x y z Use dat
  • 我的数据库有错误

    创建表时如下 create table Ticket ticket id integer not null primary key AirlineName varchar not null CustomerName varchar from
  • SQL Server XQuery 返回错误

    我正在 SQL Server 2012 中对 XML 数据类型列执行查询 数据示例如下

随机推荐

  • Eclipse、AndroidStudio

    Eclipse ADT SDK AndroidStudio Android Plugin for Gradle gradle SDK
  • 【自然语言处理】最大熵马尔可夫模型

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 由于这部分的参考资料比较少 网上大部分资料重复且不完整 对于一些关键计算没有推导 所以这里我主要讨论几篇论文和讲义 但是这些论文和讲义之间也有些许差别 讨论的过程中我会加入自己的理解
  • 百度网盘下载提速,推荐3种亲测有效的方法

    凉透的下载工具 自从PanDownload事件之后 陆续出了很多第三方的度盘不限速下载神器 但是最后都凉了 这些第三方下载神器 都是个人开发者 即便有盈利也承受不起巨大的风险 甚至有款下载神器 用爱发电 流程是这样的 1 用户提交下载链接
  • 34门课改变人生——牛人自学计算机总结

    转载说明 在人人网上看到一个在美国学生物的硕士通过MOOC学习最终找到IT工程师工作的故事 非常励志 而且每门课都有很有价值的点评 经过作者本人同意转载到MOOC学院 如果各位有后续问题可以把他本人拉来答疑 转载正文 首先这只是我个人的总结
  • Java小细节

    一 result null 和 result isEmpty 有什么区别 在 Java 中 result null 和 result isEmpty 是两个不同的检查 分别用于不同的目的 result null 这个检查用于确定变量 res
  • 最大平均值子数组

    最大平均值子数组
  • 企业级springboot项目架构模板V3.0,开箱即用

    此次 3 0 更新点 1 加入文件服务 quick storage 功能支持OSS FTP存储 该服务支持以SDK的方式引入 2 修复sentinel因path路径问题导致流控失效问题 3 修复word模板生成PDF文件工具类时首次生成时
  • 电子科技大学编译原理复习笔记(五):词法分析

    目录 前言 重点一览 词法分析概述 词法分析的功能 词法分析器的输出形式 词法分析器的结构 状态转换图 状态转换图的构造 词法分析器的设计 基本结构 内容 符号表 目的 组成 在词法分析中的作用 符号表的一般形式 常用的符号表结构 总结与补
  • 现有一个01串s,找出一个最长的连续子串。

    描述 如果一个01串任意两个相邻位置的字符都是不一样的我们就叫这个01串为交错01串 例如 1 10101 0101010 都是交错01串 现有一个01串s 找出一个最长的连续子串 并且这个字串是一个交错01串 求出最长的这样的子串的长度是
  • 华为CE6865交换机远程抓包

    一 背景 由于数据中心使用了VXLAN技术 导致在三层网络中查看不到原始的MAC数据帧 另外一个局限就是所有网络设备都不在本地 所以无法使用镜像技术进行抓包 最后决定使用交换机自带的抓包工具进行远程抓包 把抓包后的文件先保存在交换机上 然后
  • angularJS 报错: [ngModel:numfmt] http://errors.angularjs.org/1.4.1/ngModel/numfmt?p0=333

    pre stringToNumber2 指令中这么写没问题 但是html中调用也这么写 html解析会自动将标签和标签属性专为小写 即stringToNumber2变成了stringtonumber2 导致最终 Error ngModel
  • PandoraBox 端口映射设置

    http www right com cn forum forum php mod viewthread tid 161104
  • 【算法图解】散列表

    一 引入 如果我们需要查找一门课的学分 如 计算机算法设计与分析 简称 算法 这门课 如果教务做得很烂 所有课程都不是按照一定的顺序排列的 那么我们需要浏览每一行直到找到这门课 这将耗费我们O n 的时间 而如果教务系统的学分排序是按照汉语
  • 三年工作经验和月薪16k的java程序员应该如何学习框架源码?

    不管对于哪个段位的程序员来说 读源码都是一件好处颇多的事情 特别于初学者而言 这能迅速的吸纳优秀框架精华代码营养 迅速成长 不巧的是 晦涩难懂的源码 很容易让人心生怯意 今天分享一下读源码的方法 一 了解框架解决了什么问题 这不光对读源码有
  • 米勒电容和米勒效应

    转载 不好意思 时间太久远了 特此注明为转载 之前我们在介绍MOS和IGBT的文章中也有提到米勒电容和米勒效应的概念 在IGBT的导通过程分析的文章中我们也简单提到过米勒平台 下面我们来详细地聊一聊 米勒电容 上图是我们之前在讲MOS和IG
  • linux内存面试题,面试题 +答案

    1 谈谈你对面向对象编程的认识 京东 面向对象编程注重的是 1 数据和其行为的打包封装 2 程序的接口和实现的解耦 2 数据库1中存放着a类数据 数据库2中存放着以天为单位划分的表30张 比如table 20110909 table 201
  • uniapp input自动聚焦

    input标签有一个属性focus 获取焦点 默认值false
  • [论文阅读] (11)ACE算法和暗通道先验图像去雾算法(Rizzi

    娜璋带你读论文 系列主要是督促自己阅读优秀论文及听取学术讲座 并分享给大家 希望您喜欢 由于作者的英文水平和学术能力不高 需要不断提升 所以还请大家批评指正 非常欢迎大家给我留言评论 学术路上期待与您前行 加油 前一篇文章详细介绍和总结基于
  • k8s 集群部署问题整理

    对kubernetes感兴趣的可以加群885763297 一起玩转kubernetes 1 hostname master could not be reached 在host中没有加解析 2 curl sSL http localhost
  • MyBatis中-转义-循环-判断-返回

    官方中文文档地址 http www mybatis org mybatis 3 zh getting started html 1 在Mybatis mapping xml映射配置文件中使用大于 gt 号小于号 lt XML文件会在解析XM