MyBatis 模糊查询

一、对于Oracle数据库

1. 字符串连接符 ||

MyBatis 映射文件写法:

<select id="findByNickname" parameterType="java.lang.String" 
    resultMap="articleResult">
		select *
		from "article", "user"
		where "user_id" = "user"."id"
		and "nickname" like '%'||#{nickname}||'%'
</select>

日志sql输出:

select * 
from "article", "user" 
where "user_id" = "user"."id" 
and "nickname" like '%'||?||'%'

2. Oracle拼接函数 concat()

MyBatis 映射文件写法:

<select id="findByNickname" parameterType="java.lang.String" 
    resultMap="articleResult">
		select *
		from "article", "user"
		where "user_id" = "user"."id"
		and "nickname" like concat(concat('%', #{nickname}), '%')
</select>

日志sql输出:

select * 
from "article", "user" 
where "user_id" = "user"."id" 
and "nickname" like concat(concat('%', ?), '%') 

3. MyBatis ${}

MyBatis 映射文件写法:

<select id="findByNickname" parameterType="java.lang.String"
    resultMap="articleResult">
		select *
		from "article", "user"
		where "user_id" = "user"."id"
		and "nickname" like '%${nickname}%'
</select>

日志sql输出:

select * 
from "article", "user" 
where "user_id" = "user"."id" 
and "nickname" like '%中%' 

二、对于MySQL数据库

1. 字符串拼接即可

MyBatis 映射文件写法:

<select id="findByNickname" resultMap="articleResult"   
    parameterType="java.lang.String">
		select *
		from article, `user`
		where user_id = `user`.id
		and nickname like "%"#{nickname}"%"
	</select>

日志sql输出:

select * 
from article, `user` 
where user_id = `user`.id
and nickname like "%"?"%"

2. 字符串连接符 ||

2.1 双引号

MyBatis 映射文件写法:

<select id="findByNickname" parameterType="java.lang.String" 
    resultMap="articleResult">
		select *
		from article, `user`
		where user_id = `user`.id
		and nickname like "%"||#{nickname}||"%"
	</select>

日志sql输出:

select * 
from article, `user`
where user_id = `user`.id
and nickname like "%"||?||"%"  

2.2 单引号

MyBatis 映射文件写法:

<select id="findByNickname" parameterType="java.lang.String" 
    resultMap="articleResult">
		select *
		from article, `user`
		where user_id = `user`.id
		and nickname like '%'||#{nickname}||'%'
	</select>

日志sql输出:

select * 
from article, `user`
where user_id = `user`.id
and nickname like '%'||?||'%' 

3. MySQL拼接函数concat() [单引号,双引号包裹%都可以]

MyBatis 映射文件写法:

<select id="findByNickname" resultMap="articleResult"   
    parameterType="java.lang.String">
		select *
		from article, `user`
		where user_id = `user`.id
		where nickname like concat("%", #{nickname}, "%")
	</select>

日志sql输出:

select * 
from article, `user` 
where user_id = `user`.id 
and nickname like concat("%", ?, "%")

4. MyBatis ${} [单引号,双引号包裹参数都可以]

MyBatis 映射文件写法:

<select id="findByNickname" resultMap="articleResult"   
    parameterType="java.lang.String">
		select *
		from article, `user`
		where user_id = `user`.id
		where nickname like '%${nickname}%'
	</select>

日志sql输出:

select * 
from article, `user` 
where user_id = `user`.id 
and nickname like '%晨%'

参考网址
https://blog.csdn.net/zhenwei1994/article/details/81876278点我跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值