iBATIS sql中的大于、小于、like等符号写法

本文介绍XML中特殊字符的转义方法,包括使用实体引用和CDATA段。此外,还提供了一个SQL LIKE操作符的有效用例,展示了如何正确拼接参数。

其实就是xml的特殊符号,因为它的配置就是xml,所以可以用下面这种写法转义

    &lt;          < 
    &gt;          >  
    &lt;&gt;   <>
    &amp;      & 
    &apos;      '
    &quot;      "

 

也可以使用<![CDATA[ ]]>符号进行说明,将此类符号不进行解析 
    <![CDATA[ 这里写你的sql ]]>  

 

like的写法可以用下面的这种
    LIKE #param#||'%'  或 '$param$%'

 

### PostgreSQL 使用 `@Select` 和 `LIKE` 的查询写法 在 PostgreSQL 数据库中,可以使用 MyBatis 提供的 `@Select` 注解来编写原生 SQL 查询。当涉及到模糊匹配时,通常会结合 `LIKE` 运算符实现。以下是基于提供的引用以及相关知识整理的一个完整的示例。 #### 示例代码 假设有一个名为 `users` 的表,结构如下: | Column | Type | |-----------|--------------| | id | SERIAL PRIMARY KEY | | username | VARCHAR(255) | 需求是通过用户名的部分字符串进行模糊查询,并返回所有符合条件的数据。 ```java import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Result; import java.util.List; public interface UserMapper { @Select("SELECT * FROM users WHERE username LIKE CONCAT('%', #{keyword}, '%')") @Results({ @Result(column = "id", property = "id"), @Result(column = "username", property = "username") }) List<User> findByUsernameLike(@Param("keyword") String keyword); } ``` 在此示例中: - 使用了 `CONCAT` 函数构建动态的模糊匹配条件[^1]。 - 参数 `${}` 或者 `#{}` 被用来传递外部变量到 SQL 中[^3]。 - 结果映射由 `@Results` 定义,其中每一列对应实体类中的属性[^2]。 如果需要支持更复杂的场景(比如多个字段联合模糊查询),可以通过以下方式扩展: ```java @Select("SELECT * FROM users WHERE (username LIKE '%' || #{keyword} || '%' OR email LIKE '%' || #{keyword} || '%')") List<User> searchUsers(@Param("keyword") String keyword); ``` 这里采用了 PostgreSQL 特有的字符串拼接运算符 `||` 来替代 MySQL 的 `CONCAT` 方法[^4]。 --- ### 注意事项 1. **SQL 注入风险** 如果直接使用 `${}` 插入未经过滤的内容,则可能存在 SQL 注入的风险。推荐始终优先采用预编译占位符 `#{}`[^3]。 2. **性能优化** 对于大规模数据集上的模糊查询操作,应考虑索引设计的影响。前缀 `%` 可能导致无法利用 B-tree 类型的标准索引;此时可探索全文检索功能或者 GIN/GIST 索引来提升效率[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值