mybatis实现模糊查询

在项目管理系统中,模糊查询数据很常见,MyBatis实现模糊查询简单。本文总结了几种实现方法,包括用${}字符串拼接符拼接(有SQL注入风险)、concat()方法拼接(可防注入)、标签绑定元素(解决不同数据库适配问题)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目管理系统中,模糊查询数据最为常见,mybatis模糊查询的实现也非常简单,只需要在映射文件中通过元素编写相应的SQL语句,并通过SqlSession的查询方法执行该SQL即可。 Mybaits实现模糊查询方法也有多种多样,下面总结了实现几种不同的方法,其具体实现方法如下。

  • 通过${}字符串拼接符拼接

在映射文件Permsisson. xml 中,添加根据权限名模糊查询权限信息列表的SQL语句,其中用了mybatis提供的字符串拼接符${value},属性值必须为value,拼接的是简单类型参数,这种字符串拼接符来拼接sql可以实现模糊查询,但是对于一些安全性要求比较高的项目,无法防止SQL注入,一般不推荐这种方法,具体实现代码如下:

     <!-- 查询所有用户权限 -->
	<select id="selectPermissonList" parameterType="string"
		resultType="UPermission">
		SELECT u_permission.* FROM u_permission
		<if test="info != '' and info!=null ">
			<where>
				u_permission.name like '%${value}%'
			</where>
		</if>
	</select>
  • 通过concat()方法拼接

对于安全性比较高的项目,可以用这种方式来拼接sql语句,这样既可以实现模糊查询,也可以防止sql注入问题,可以对上面的映射文件Permsisson.xml中的模糊查询的select语句进行修改,使用MySQL中的concat()函数进行字符串拼接, 具体修改示例如下所示:

    <!-- 查询所有用户权限 -->
	<select id="selectPermissonList" parameterType="string"
		resultType="UPermission">
		SELECT u_permission.* FROM u_permission
		<if test="info != '' and info!=null ">
			<where>
				u_permission.name like concat('%',#{info},'%')
			</where>
		</if>
	</select>
  • 通过标签绑定元素

在进行模糊查询编写SOL语句的时候,如果使用"${}“进行字符串拼接,则无法防止SOL注入问题;如果使用concat函数进行拼接,则只针对MySOL数据库有效;如果使用的是Oracle数据库,则要使用连接符号”||"。 这样,映射文件中的SOL就要根据不同的情况提供不同形式的实现,这显然是比较麻烦的,且不利于项目的移植。 为此,MyBatis提供了元素来解决这一问题,我们完全不必使用数据库语言,只要使用MyBatis的语言即可与所需参数连接:

    <!-- 查询所有用户权限 -->
	<select id="selectPermissonList" parameterType="string"
		resultType="UPermission">
		SELECT u_permission.* FROM u_permission
		<if test="info != '' and info!=null ">
			<!-- 绑定元素 -->
			<bind name="info" value="'%'+info+'%'" />
			<where>
				u_permission.name like #{info}
			</where>
		</if>
	</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值