mybatis通配符(“%“,“_“)模糊查询、插入处理

Mybatis经常会使用like查询作为模糊匹配字符进行搜索匹配,但是对于"%“,”_"等特殊符号,会被识别成通配查询,插入的时候也会被识别成通配符,而导致插入失败,因此对于该类符号需要进行特殊处理。

通配符插入

直接将特殊符号进行转义即可正常插入

field = field.replaceAll("%", "\\%").replaceAll("_", "\\_");

通配符查询

思路一样,也是进行转义查询。但是转义符也需要进行转义,因此处理格式如下:

field = field .replaceAll("%", "\\\\%").replaceAll("_", "\\\\_");

mapper按正常写法即可,如下

AND field LIKE CONCAT('%',#{field},'%')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis 分页查询、模糊查询以及映射文件都是 MyBatis 框架中用于构建 SQL 查询的强大特性。下面分别对这三个概念进行简要解释: ### 1. **MyBatis 分页查询** 在传统的 SQL 中,进行分页操作需要通过 LIMIT 和 OFFSET 关键字来指定每一页的数据范围。但在 MyBatis 中,为了简化分页操作并提高性能,引入了自定义分页插件,如 MyBatis Plus 的 `PageHelper` 插件。用户只需要在配置文件中开启此功能,并提供分页的相关参数,即可生成对应的 SQL 语句进行分页查询。 #### 使用示例: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; PageHelper.startPage(pageNum, pageSize); List<MyModel> models = yourMapper.selectAllModels(); PageInfo<MyModel> pageInfo = new PageInfo<>(models); System.out.println("总页数:" + pageInfo.getPages()); ``` ### 2. **MyBatis 模糊查询** 模糊查询允许在数据库查询中使用 LIKE 运算符,其中通配符 `%` 可表示任意字符串。在 MyBatis 中,通过在 SQL 语句中直接添加 WHERE 子句并包含合适的模糊匹配条件来进行。 #### 示例 SQL 语句: ```sql SELECT * FROM table_name WHERE column_name LIKE '%search_keyword%'; ``` 在映射文件中定义对应的方法和参数: ```xml <select id="selectWithFuzzyMatch" resultType="your_model"> SELECT * FROM table_name WHERE column_name LIKE CONCAT('%', #{searchKeyword}, '%') </select> ``` ### 3. **MyBatis 映射文件** MyBatis 的核心组件之一就是 XML 或者注解形式的映射文件 (`mapper.xml`),它负责定义如何将数据库表转换成 Java 对象。在映射文件中,可以定义 SQL 查询、插入、更新和删除操作等。 #### 示例映射文件结构: ```xml <mapper namespace="com.example.your_package.YourDao"> <select id="selectAllModels" resultType="com.example.your_package.Model"> SELECT * FROM model_table </select> <!-- 其他操作如:insert, update, delete --> </mapper> ``` 通过以上三个方面的理解,你可以更深入地掌握 MyBatis 平台的基本操作,包括数据检索、复杂查询和业务逻辑处理等方面。此外,MyBatis 还支持动态SQL表达式、缓存机制等高级特性,进一步提升应用的性能和灵活性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值