mybatis mysql 模糊查询语句_mybatis模糊查询语句及注意事项
select count(*)
from t_user
loginacct like concat("%",#{queryText},"%")
1.动态查询语句
2.SQL中占位符不能在单引号中,否则,会以?进行查询数据
'%#{param}%'
'%?%'
3.SQL中不能使用加号进行字符串拼接,加号是用来做运算的
'%'+'D'+'%'
4.MyBatis进行拼串,拼串会出现 SQL注入情况 ,例如:“or 1=1”
'%${param}%'
5.使用内置方法进行拼串
concat('%',#{param},'%')
6.查询条件值本身为%,查询出所有的数据
concat('%',#{param},'%') => '%%%'
'%\%%' 使用转译字符再进行查询。
7.#和\是一个意思,表示转译。使用#代替\
select * from t_user where username like '%#%%' escape '#'
select * from t_user where loginacct like '%@%%' escape '@'
SELECT * FROM t_user WHERE loginacct LIKE concat('%','@%','%') ESCAPE '@'
8.常见的SQL文,在Oracle中,使用两个竖线用来表示字符串拼接,MySQL中没有这样的语法。
select * from t_user where username like '%'|| #{param} ||'%'
SQL参数问题
select count(*) from t_user
loginacct like '%#{queryText}%'
select * from t_user
loginacct like '%#{queryText}%'
limit #{start}, #{size}
有3个参数,但是只是指定了2个.
Select * from t_user where loginacct like '%#{loginacct}%' limit?,?
org.springframework.dao.TransientDataAccessResourceException:
### Error querying database. Cause: java.sql.SQLException:Parameter index out of range (3 > number of parameters, which is 2).
### The error may exist in URL [jar:file:/F:/atcrowdfunding/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/atcrowdfunding-main/WEB-INF/lib/atcrowdfunding-user-0.0.1-SNAPSHOT.jar!/mybatis/mapper-user.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL:select * from t_user WHERE loginacct like '%?%' limit ?, ?
### Cause: java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
; SQL []; Parameter index out of range (3 > number of parameters, which is 2).; nested exception is java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
SQL注入问题 :
Id = 100 OR 1=1
SELECT * FROM t_user WHERE id= ${id}
SELECT * FROM t_user WHERE id= 100 OR 1=1
在特定场合可以使用${}:
例如:
Create table ${tableName} … //表名称位置不能使用?占位符,所以也就不能使用#{}
Order by ${fieldName} asc //对字段进行排序,可以 传递动态字段名称.
select count(*) from t_user
loginacct like'%${queryText}%'
select * from t_user
loginacct like '%${queryText}%'
limit #{start}, #{size}
SQL拼接问题
不能使用加号拼接
使用concat()函数拼接字符串
select count(*) from t_user
loginacct likeconcat('%',#{queryText},'%')
select * from t_user
loginacct likeconcat('%',#{queryText},'%')
limit #{start}, #{size}
查询关键字为% 和 \
查询关键字为%将数据都查询出来了,不安全.
对查询的特殊符号进行转译.
解决:
Java中转译
String queryText = "%";
if(StringUtil.isNotEmpty(queryText)){
//斜线本身需要转译,regex中两个\\表示一个\ ; Java中也是两个\\表示一个\;所以,需要四个斜线
queryText = queryText.replaceAll("%", "\\\\%");
System.out.println("--------------"+queryText);
}
SQL语句中转译
对特殊符号进行转译;斜杠本身也属于特殊符号,需要转译.
select * from t_user where loginacct like '%\\%%'
注意:
尽量在保存数据时,验证数据的合法性,尽量避免存在的字符串中含有特殊符号.
但是,有时无法避免,则需要进行特殊处理:
例如:
"<>"
"D:\\atguigu"
mybatis mysql 模糊查询语句_mybatis模糊查询语句及注意事项相关推荐
- mybatis mysql 中文乱码_Mybatis + Mysql 插入数据时中文乱码问题
近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql. 今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱 ...
- mybatis mysql 分表_Mybatis的分表实战
前言: 以前写代码, 关于mysql的分库分表已被中间件服务所支持, 业务代码涉及的sql已规避了这块. 它对扩展友好, 你也不知道到底他分为多少库, 多少表, 一切都是透明的. 不过对于小的团队/工 ...
- mybatis mysql 树形结构_Mybatis查询树形结构数据
数据表的设计 创建数据表 对于树形结构的数据库设计通常是基于继承关系设计的,也就是通过父ID关联来实现的. 一张树形结构的数据表基本的三个字段:id(自己).name(名称)和parentid(父类编 ...
- mybatis mysql 模糊查询_MyBatis Oracle、MySQL、DB2、SQLServer的like模糊查询
Oracle数据库: select * from t_user where name like '%'||#{search_name}||'%' 或者 select * from t_user whe ...
- mybatis mysql 中文乱码_mybatis连接mysql数据库插入中文乱码
对于mysql数据库的乱码问题,有两中情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的 ...
- 在线MySQL,SQL Server建表语句生成JSON测试数据工具
在线MySQL,SQL Server建表语句生成JSON测试数据工具 在线MySQL,SQL Server建表语句生成JSON测试数据工具 本工具可以将SQL建表语句生成JSON测试数据,支持MySQ ...
- mybatis查询mysql blob字段_mybatis+spring+mySql 处理Blob字段(报错:data too long for column 'descrip')...
通过Spring+Mybatis+Mysql搭建了一个框架,在向MYSQl插入图片信息时,将其保存为BLOB类型到数据库. 前台JAVA代码如下: @RequestMapping("/zdf ...
- 微信小程序+SpringBoot+mybatis+MySQL实现简单的登录
微信小程序+SpringBoot+mybatis+MySQL实现简单的登录 当下微信小程序和springboot都是比较火的.今天我们来用springboot和微信小程序来实现简单的登录. 1.首先来 ...
- 使用Intellij Idea创建第一个SpringBoot+MyBatis+MySql项目并运行(附安装教程),使用Maven构建项目并管理第三方jar
Intellij Idea 背景 开发工具及主要框架 Maven 下载安装 settings.xml修改 IDEA配置Maven 注册私有jar Maven打包 MySql安装 配置环境变量 Inte ...
最新文章
- 核酸和CT同时用, 听谁的?——兼释一天新增一万多
- cocos2dx event call stack
- 工具在软件过程改进中的重要作用
- TensorFlow-CIFAR10 CNN代码分析
- 牛客题霸 [	验证IP地址] C++题解/答案
- tinymce移动端使用_关于在移动端避免使用100vh的原因及解决方案
- 两个字符串日期怎么比较大小_面对家中两个孩子的争抢哭闹,那家长应该怎么处理才比较好呢?...
- JAVA内存管理+String创建字符串对象+常量池详解(合集)
- 链表实现直接选择排序
- 深度 | 面目全非自动化
- 数据结构课程设计(选):连连看
- golang学习之五:error、painc、recover
- 基金投资基本常识【狂神说】
- 无线通信学习之——OFDM
- 蓝牙AOA到达角算法(二)
- 五彩斑斓的黑,找到了
- Hadoop、Spark、Storm对比
- 【IDE-Visual Studio】VC\VS2005\VS2008\VS2010 消除 忽略 加强警告Warning
- Linux内核内存相关问题,这一篇让你彻底了解
- ImageSpan的使用