`
zhouchaofei2010
  • 浏览: 1104072 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mybatis 字符串比较与in语句处理空集合

阅读更多
1、mybatis 字符串比较

错误写法:if test="status == 'Y'"

结果:抛异常NumberFormatException异常!提示内容非常少,看不出问题在哪里!

正确写法:if test='status == "y"'

还可以这样写:if test="status == 'y'.toString()"

 

评价:真操蛋 ,双引号里的单引号就不当字符串了?javascript 都能识别呢

 

2、处理空的in子句子 How to handle an Empty IN clause inside a SQL Select Statement

 

仅仅参考:使用时需要调试 ,in() 这样写是错误的,括号里必须有表达式或者项目,所以在迭代集  合的 时候必须对集合是否为空进行处理

 

 思路1:在程序传入集合参数时,就做判断,如果为空,则返回空记录

 

 思路2: 在拼sql中对集合进行判断,参考如下

      <selectid="mySelect"resultClass="long">

    SELECT  COUNT(*)        

    FROM    myTable 

   <where>

<isNotEmpty prepend="AND" property="myInClauseValues">

       myTable.columnA IN

       <iterate property="myInClauseValues" open="(" close=")" conjunction=",">                    

                    #{InClauseValues }                   

       </iterate>

</isNotEmpty> 

<isEmpty prepend="AND" property="myInClauseValues">

      0=1              //如果条件为空。则永远返回空结果

</isEmpty> 

 </where>

</select>

 

 

 

 

1
1
分享到:
评论

相关推荐

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...

    mybatis collection list string

    标题 "mybatis collection list string" 暗示了我们讨论的主题是关于MyBatis框架中与集合(List)和字符串(String)处理相关的问题。在MyBatis这个强大的持久层框架中,集合和字符串的使用非常常见,尤其是在进行数据库...

    springmybatis

    其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...

    MyBatis动态拼接SQL

    5. `&lt;foreach&gt;`标签:用于遍历集合或数组,生成对应的SQL片段,如IN语句。这是动态SQL中非常常用的一个标签。 ```xml DELETE FROM table WHERE id IN (" separator="," close=")"&gt; #{item} ``` 在实际开发...

    mybatis-demo11-动态SQL语句.zip

    它可以用来修剪前缀、后缀或两端的字符串。在某些复杂场景下,`&lt;trim&gt;`比`&lt;where&gt;`更灵活。 6. **Set标签**: 更新操作时,`&lt;set&gt;`标签用于构建SQL的SET子句。它会自动在每个属性前面添加SET关键字,同时可以避免...

    Mybatis plus中使用in查询出错如何解决

    这种问题的原因是Mybatis plus在处理in查询时,会将参数默认加上单引号,使得参数被视为一个字符串,而不是一个参数列表。例如,`WHERE (user_id IN (?))`实际上将被视为`WHERE (user_id IN ('81554,5654,55948,...

    mybatis-demo12-动态SQL语句2-基于注解配置.zip

    5. **&lt;foreach&gt;:** 这个标签常用于处理集合数据,如在IN语句中遍历一个列表。在注解配置中,`&lt;foreach&gt;`可以用来迭代数组或集合,将每个元素插入到SQL语句中。 6. **@Insert, @Update, @Delete**: 除了`@Select`,...

    详解MyBatis直接执行SQL查询及数据批量插入

    - **传入的SQL字符串**:必须按照"MyBatis能识别的格式"编写,如"select XXX as instanceid, XXX as instancename ....",这样才能自动将查询结果映射到Java对象。 - **#{}与${}的区别**:`#{}`用于预编译处理,...

    MyBatis入门到精通

    MyBatis支持多种参数绑定,如#(预编译参数)和$(字符串拼接参数)。预编译参数更安全,能防止SQL注入。 8. **结果映射** 结果映射用于将查询结果自动映射到Java对象,可以是单个对象,也可以是集合。MyBatis...

    Mybatis中SQL语句的编写.pdf

    - 自动为字符串类型的参数添加单引号。 - 能够防止SQL注入攻击。 - **`${}`**: - 用于动态SQL的构建,常用于动态字段名等场景。 - 原样输出参数值,不会进行任何转换。 - 不具备防止SQL注入的功能,使用时需...

    mybatis常用语句和lyaui 多条件查询加分页

    - 使用`&lt;if&gt;`标签来动态构建SQL语句,只有当对应的值不为空且非空字符串时才加入更新语句中。 - `WHERE`子句不可遗漏,用于指定需要修改的具体记录。 #### 四、Lyaui多条件查询加分页 Lyaui框架(假设为Lyaui,...

    mybatis 3 中文 指南

    参数可以是简单的类型如字符串、整数,也可以是复杂的对象。结果映射则用于将数据库查询结果映射到Java对象。 - **`Parameters`**:描述参数如何绑定到SQL语句中。 - **`resultMap`**:描述结果集与Java对象之间的...

    尚硅谷Mybatis视频教程21-30

    #{}用于防止SQL注入,而${}则会直接拼接SQL字符串。 2. **源码分析**:针对Mybatis的源码分析,视频中探讨了Mybatis如何处理参数,解释了参数封装到Map的过程,帮助理解Mybatis底层的工作原理。 3. **映射文件**:...

    mybatis小练习

    4. **mybatis2_4_sqlStringVar**: 在MyBatis中,我们可以使用变量来动态地构建SQL字符串。这通常涉及到`#{}`占位符,它会自动处理预编译参数,提高SQL执行效率并增强安全性。 5. **mybatis2_5_dyn**: 同样,这与...

    Mybatis中的动态SQL语句解析

    Mybatis通过这些动态SQL元素,使得在XML配置文件中构建复杂、灵活的SQL变得简单,避免了大量的字符串拼接操作,提高了代码的可读性和可维护性。此外,这种方式还有助于减少因手动构造SQL而可能出现的错误,提升了...

    mybatis入门demo

    `#`是预编译参数,防止SQL注入,`$`则直接将参数拼接进SQL字符串。 9. **结果映射**:当查询结果涉及复杂的对象关系时,结果映射用于将查询结果转换为Java对象。它可以是单个对象,也可以是对象集合,甚至可以处理...

    springmvc+mybatis+redis

    它支持多种数据结构,如字符串、哈希、列表、集合和有序集合,这使得Redis在缓存、计数、发布订阅等场景中表现优越。由于Redis的数据存储在内存中,读写速度极快,是提升Web应用性能的有效手段。 整合SpringMVC、...

    mybatis 项目真实使用

    6. **动态 SQL**:MyBatis 的强大之处在于它的动态 SQL 功能,如 `&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;` 等标签,可以根据条件动态生成 SQL,避免了大量字符串拼接的代码。 7. **结果...

    mybatis - api文档

    ${}是简单的字符串替换,适用于动态SQL。 6. **事务管理** - MyBatis默认不管理事务,需要用户自己控制。可以通过SqlSession的commit()和rollback()方法进行事务提交和回滚。 - 在Spring整合MyBatis时,可使用...

Global site tag (gtag.js) - Google Analytics