MyBatis 的 4 个妙用,别再踩坑了!

简介: Mybatis 是 Java 中一个非常好用的数据库框架,这儿记录一下在使用过程中遇到的坑。

Mybatis 是 Java 中一个非常好用的数据库框架,这儿记录一下在使用过程中遇到的坑。


官方中文文档地址:


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


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


由于Mybatis的映射文件遵循xml文件的格式,所以不能使用像大于号或者小于号这样的xml文件特殊字符,需要使用转义字符代替。


< < 小于号

> > 大于号

& & 和

' ’ 单引号

" “ 双引号

可以使用:

SELECT * FROM test 
WHERE 1 = 1 AND start_date  &lt;= CURRENT_DATE AND end_date &gt;= CURRENT_DATE
<![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00' ]]>

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

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

<!-- 以下为错误写法,会抛NumberFormatException异常 -->
<if test="username == 'U'">
<!-- 正确写法如下两种 -->
<if test="username == 'U'.toString()">
<if test='username == "U"'>

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


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


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


在进行输入库插入的时候,如果我们需要使用已经插入的记录的主键,则需要返回刚才插入的数据的主键id。通过设置 insert 标签的 useGeneratedKeys 属性为 true 可以返回插入的记录的主键的id。


目录
相关文章
|
存储 缓存 网络协议
IPV6 的路径 MTU 发现
本文档是 Internet 工程任务组 (IETF) 的产品。它代表了 IETF 社区的共识。它已接受公众审查,并已获互联网工程指导小组 (IESG) 批准出版。有关 Internet 标准的更多信息,请参见 RFC 7841 的第 2 节。
1092 0
IPV6 的路径 MTU 发现
|
存储 安全 虚拟化
虚拟化技术:实现资源高效利用和灵活管理的利器
虚拟化技术作为实现资源高效利用和灵活管理的重要手段,在数字化时代背景下,正逐步改变传统IT架构模式。本文概述了虚拟化技术的概念、原理及其在数据中心管理、云计算平台、企业信息化建设、科研教育及医疗行业的应用,并探讨了其面临的挑战与未来发展趋势。
843 3
|
域名解析 负载均衡 网络协议
阿里云云解析收费版和免费版有什么不同?域名解析DNS免费收费区别对比
阿里云域名解析DNS收费吗?域名解析DNS免费版和收费版有什么区别?
7608 0
阿里云云解析收费版和免费版有什么不同?域名解析DNS免费收费区别对比
|
Python
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
本文提供了一份详细的PySide6与VSCode联动的操作指南,包括安装配置VSCode、安装必要的扩展、配置扩展以及编辑和运行PySide6项目。文中还提到了相关工具如uic.exe、rcc.exe和designer.exe的用途,并提供了进一步学习的资源。
2825 1
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
|
存储 数据管理 数据处理
处理STM32 DMA方式下的HAL_UART_ERROR_ORE错误
通过正确配置UART和DMA、实现有效的错误处理回调函数以及优化数据处理和缓冲区管理,可以有效处理STM32中DMA方式下的 `HAL_UART_ERROR_ORE`错误。这些方法确保了数据的高效传输和处理,避免了因数据溢出导致的通信中断和数据丢失。希望这些解决方案能够帮助您在实际应用中更好地应对和解决此类问题。
2975 0
|
关系型数据库 MySQL iOS开发
干货文:Mac 中 .bash_profile 和 .zshrc 的区别
干货文:Mac 中 .bash_profile 和 .zshrc 的区别
2646 1
|
消息中间件 分布式计算 Kafka
利用Spark将Kafka数据流写入HDFS
利用Spark将Kafka数据流写入HDFS
537 0
|
监控 Java
Pinpoint【部署 02】Pinpoint Agent 安装启动及监控 SpringBoot 项目案例分享(添加快速测试math-game.jar包)
Pinpoint【部署 02】Pinpoint Agent 安装启动及监控 SpringBoot 项目案例分享(添加快速测试math-game.jar包)
1072 1
|
存储 安全 Shell
Android系统 adb shell auth授权使用
Android系统 adb shell auth授权使用
2234 2
|
机器学习/深度学习 编解码 计算机视觉
深入 YOLOv8:探索 block.py 中的模块,逐行代码分析(一)
深入 YOLOv8:探索 block.py 中的模块,逐行代码分析(一)