首页 > 数据库 >开发手记:MyBatis的mapper文件的中SQL符号转义

开发手记:MyBatis的mapper文件的中SQL符号转义

时间:2023-05-29 22:46:06浏览次数:63  
标签:XML mapper 符号 转义 SQL MyBatis id

字符转义问题

在 MaBatis 的 XML 文件中编写SQL语句时,<符号会出现转义问题,例如:

<!--查询指定月份内的订单-->
<select id="queryInRange" resultType="OrderEntity">
		SELECT * FROM order
		WHERE create_time > DATE_SUB(NOW(), INTERVAL #{month} MONTH)
		AND user_id = #{id};
	</select>

会出现这种问题的原因是:<会与构成 XML 标签的<>解析冲突

解决方案

  1. 通过转义符

    原符号 < <= > >= & ' "
    替换符号 &lt; &lt;= &gt; &gt;= &amp; &apos; &quot;
  2. 通过CDATA

    CDATA(Character Data)块是 XML 的一种语法结构,不是 MyBatis 特有的。它用于将文本数据视为纯文本,而不进行 XML 解析。

    	<select id="queryInRange" resultType="OrderEntity">
    		SELECT * FROM order
    		WHERE create_time <![CDATA[>]]> DATE_SUB(NOW(), INTERVAL #{month} MONTH)
    		AND user_id = #{id};
    	</select>
    

标签:XML,mapper,符号,转义,SQL,MyBatis,id
From: https://www.cnblogs.com/yaocy/p/17441891.html

相关文章

  • Javaweb中在SQL语句中使用未知数进行多表查询
    这个问题主要是匹配好引号和单引号即可。如果是varchar型,那么变量要带单引号('),如果是int型就不用带。同时要注意用+号进行String的拼接。示例:publicList<Student>huizong_bujige(Stringkemu1){List<Student>list=newArrayList<>();Connectionconn......
  • MYSQL复习
    --创建数据库CREATEDATABASEdatabase_nameON[PRIMARY](NAME=file_name,FILENAME='os_file_name',[SIZE=size,][MAXSIZE=max_size|UNLIMTED,][FILEGROWTH=growth_increment])LOGON[PRIMARY](NAME=logical_file_name,FILENAME='os_f......
  • mysql主从切换—一主两从架构
    文档课题:mysql主从切换.数据库:mysql8.0.27系统:rhel7.3安装包:mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz系统架构:一主两从环境介绍:1、应用场景生产环境中,当主库A发生故障时,需要将从库B切换成主库,如下模拟主库Master宕机,slave01升级为Master,slave02保持不变,并实现slave01和......
  • 安装mysql 压缩版数据库
    1、下载压缩版压缩包下载地址:https://dev.mysql.com/downloads/mysql/5.5.html#downloads主要步骤1、解压文件,切换到bin目录,复制地址D:\Software\mysql\mysql-8.0.30-winx64\bin2、在系统变量的path中添加地址3、创建添加my.ini文件添加一下内容[mysql]#设置mysq......
  • 11)MySQL编程基础
    1、用户会话变量:会话期间一直有效;但其他的客户机不能访问;一般情况下,用户会话变量的定义与赋值会同时进行; 方法一:使用set命令定义用户会话变量,并为其赋值;set@user_variable1=expre1[,@user_variable2=expre2,...];方法二:使用select语句定义用户会话变量,并为其赋值;sele......
  • MySQL之慢查询sql排查及优化
    前言sql语句优化的方式:1.尽量少join2.尽量少排序3.尽量避免select*4.尽量少or5.尽量用unionall代替union…(优化的方式有很多,这里就不一一举例了)当你避免这些问题的时候,为什么sql查询还是这么慢?排查慢查询sqlps:mysql版本为5.71.连接mysqlmysql-uroot-p2.查......
  • Mysql 字符集问题:utf8与utf8mb4
    UTF-8编码是一种变长的编码机制,可以用1~4个字节存储字符。MySQL中的utf8编码并不是真正的UTF-8,其最长只有3个字节。当遇到占4个字节的UTF-8编码,例如emoji字符或者复杂的汉字,会导致存储异常。从5.5.3开始,MySQL开始用utf8mb4编码来实现完整的UTF-8,其中mb4表示mo......
  • EBS: FORM窗体开发使用VIEW模式开发,plsql DEVELOPER 自动生成PLSQL脚本
    FORM窗体开发使用VIEW模式开发,plsqlDEVELOPER自动生成PLSQL脚本,CREATEORREPLACEPACKAGEAPPS.HAND_PLSQL_AUTOCREATEAUTHIDCURRENT_USERAS/*$Header:HDPLSATC.pls115.12004/09/0215:33:09pkmship$*/PROCEDUREregist_table(p_table_nameINVARCHAR2,......
  • 如何将数据从MySQL/MongoDB中迁移至云开发数据库
    本篇文章从MySQL、MongoDB迁移到云开发数据库,其他数据库迁移也都大同小异~迁移大致分为以下几步?:从MySQL、MongoDB将数据库导出为JSON或CSV格式创建一个云开发环境到云开发数据库新建一个集合在集合内导入JSON或CSV格式文件Mysql迁移到云开发数据库为了方便,我们使用Na......
  • Avalonia通过ef操作sqlite
    首选我们建个MVVM模板的项目,在项目中引入包Microsoft.EntityFrameworkCore.Sqlite1、创建实体publicclassTodoEntity{publicGuidId{get;set;}publicstringThing{get;set;}publicDateTimeCreateTime{get;set;}}2、创建上下文ubliccl......