mybatis中三大数据库mysql,oracle,sqlserver分别用like查询

本文介绍了在MyBatis框架下,针对mysql、oracle和sqlserver三种主流数据库使用Like进行模糊查询的方法。提供了每种数据库的具体SQL语句实例。
mybatis中三大数据库mysql,oracle,sqlserver分别用like查询
1、 mysql
select  * from user where  name like  concat('%',#{name},'%')
2、 oracle
select  * from user where  name like  '%'||#{name}||'%'

select * from tb where name like concat('%',concat('xx','%'))
2022年4月7日 16:50:54 添加
3、 sqlserver
select  * from user where  name like    '%'+#{title}+'%'
### MyBatisLike 的使用方法 #### XML 文件方式 在 MyBatis 的 XML 文件中,可以使用 `concat` 函数或字符串拼接的方式来实现 `LIKE` 查询。 ```xml <select id="findUserByLikeName2" parameterType="java.lang.String" resultMap="user"> select * from t_user where name like concat('%', #{name}, '%') </select> ``` 这种方式适用于多种数据库,如 MySQL、DB2 等。在 MySQL 和 DB2 中,也可以使用 `||` 进行字符串拼接: ```xml <select id="findUserByLikeName3" parameterType="java.lang.String" resultMap="user"> select * from t_user where name like '%'||#{name}||'%' </select> ``` #### 注解开发方式 在使用 MyBatis 的注解开发时,在 `@Select` 注解中编写模糊查询语句。不同数据库的 `LIKE` 语句有所不同: - **Oracle 数据库**: ```java @Select("SELECT * FROM user WHERE name like CONCAT('%',#{name},'%')") List<User> findUserByLikeNameOracle(String name); ``` 或者 ```java @Select("SELECT * FROM user WHERE name like '%'||#{name}||'%'") List<User> findUserByLikeNameOracle2(String name); ``` - **SQL Server 数据库**: ```java @Select("SELECT * FROM user WHERE name like '%'+#{name}+'%'") List<User> findUserByLikeNameSQLServer(String name); ``` - **MySQL 数据库**: ```java @Select("SELECT * FROM user WHERE name like CONCAT('%',#{name},'%')") List<User> findUserByLikeNameMySQL(String name); ``` - **DB2 数据库**: ```java @Select("SELECT * FROM user WHERE name like CONCAT('%',#{name},'%')") List<User> findUserByLikeNameDB2(String name); ``` 或者 ```java @Select("SELECT * FROM user WHERE name like '%'||#{name}||'%'") List<User> findUserByLikeNameDB2_2(String name); ``` ### 相关问题解决方案 #### 索引失效问题 在使用 `LIKE` 进行模糊查询时,如果使用 `'%xxx'` 开头的方式,可能会导致索引失效。可以使用 `CONCAT` 函数来避免部分问题,但如果查询条件是完全模糊的,仍然可能影响性能。解决方案可以考虑使用全文索引等技术来提高查询效率。 #### 传参问题 在 MyBatis 中进行 `LIKE` 模糊查询时,传参需要注意。使用 `#{}` 占位符可以避免 SQL 注入问题。例如在 XML 文件中使用 `concat('%', #{name}, '%')` 或者在注解中使用相应的拼接方式,能正确处理参数传递。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值