MyBatis Like

MyBatis动态SQL示例

MySQL:

<select id="listByPidsLikeName" resultType="com.xdt.ibs.environ.device.bean.Environ">
        SELECT id,pid,logicid,`name`,`type`,ip_addr AS ipAddr,`port`,modbus_addr AS modbusAddr,pm25_h AS pm25H,
      pm10_h AS pm10H,temp_h AS tempH,humi_h AS humiH,co2_h AS co2H,tvoc_h AS tvocH,conn_status AS connStatus,
      update_time AS updateTime,create_time AS createTime FROM environ WHERE pid IN
<foreach collection="list" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> <if test="name != null and name != ''"> AND `name` like CONCAT('%',#{name},'%') </if> </select>

啦啦啦

### 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}, '%')` 或者在注解中使用相应的拼接方式,能正确处理参数传递。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值