`
zweichxu
  • 浏览: 135167 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

mybatis动态sql查询条件中list的判断及取值

阅读更多

如果Mapper接口中的方法如果只有一个参数,则xml动态sql中可以直接引用参数名,如果有多个参数,保险做法是使用@Param注解设置参数别名,这样可以在xml动态sql中使用参数别名。

如:List searchSometh(@Param("parama") String parama, @Param("paramb") List<String> paramb);

<select id="searchSometh" ..>
select * from some_table 
<trim prefix="where" prefixOverrides="AND | OR">
     <if test="parama != null">
        and field_a = #{parama,jdbcType=VARCHAR}
      </if>
      <if test="paramb != null">
          <choose>
             <when test="paramb.size()==1">and field_b=#{paramb[0]}</when>
             <when test="paramb.size()>1">
                 and field_b in 
                 <foreach item="item" index="index" collection="paramb" open="(" separator="," close=")">#{item}</foreach>
              </when>
          </choose>
      </if>
</trim>
</select>

   对于List类型的集合参数,foreach中的collection属性值,如果参数没有使用@Param注解设置参数别名,则collection属性值为“list”,否则使用参数别名

分享到:
评论

相关推荐

    尚硅谷Mybatis视频教程21-30

    3. **映射文件**:Mybatis的映射文件是实现SQL动态绑定的核心,视频详细讲解了如何编写映射文件,包括不同的参数处理规则,如#取值时指定参数的相关规则。 4. **resultMap**:resultMap是Mybatis中的一个重要元素,...

    Mybatis坑之collection单属性list

    问题出在查询结果中,`id`与`supplierOrganizationIdList`的值相同,这可能是因为在MyBatis的映射配置中,集合属性(如`supplierOrganizationIdList`)的取值依据是子查询的结果,而在原SQL中,`supplier_...

    Java八股文是指程序员在面试过程中经常被问到的具有固定化和格式化答案的问题集合

    2. **SQL**:Structured Query Language,用于管理和查询数据库的标准语言。 3. **事务管理**:事务是一组操作的集合,要么全部成功,要么全部失败。Java提供了JTA(Java Transaction API)来支持分布式事务管理。 ...

    Java面试题深入解析:在互联网公司面试程序员需要留意的六个问题.docx

    - **MyBatis**:MyBatis提供了一个SQL映射框架,通过XML或注解定义SQL语句,减少了DAO层的代码量,介于全手动SQL和ORM之间。 熟悉这些知识点,对于Java程序员在互联网公司的面试会有极大的帮助,能够展现出扎实的...

    面试资料总结

    - **MyBatis框架**:理解动态SQL,XML与注解配置方式,以及ResultMap和ParameterMap的应用。 8. **设计模式**: - 掌握常见的设计模式,如单例模式、工厂模式、观察者模式、装饰器模式等,理解它们在实际项目中的...

    java机试题整理

    - **MyBatis框架**:是一个半自动化的映射工具,它同样支持ORM,但在SQL语句的编写方面提供了更大的自由度,适合复杂的查询需求。 **4. 数据库的增删改查语句** 基本的SQL语句包括: - **增加记录**:`INSERT ...

    java面试题

    - MyBatis框架的使用,动态SQL,事务管理。 以上知识点只是Java面试题的一部分,实际面试中可能还会涉及数据库操作、分布式系统、微服务架构、性能优化等方面的问题。不断学习和实践,才能在Java面试中脱颖而出。

    最全的java面试大全

    - **MyBatis**:了解SQL映射文件,动态SQL,以及事务管理。 - **Dubbo**:服务治理、远程调用、注册中心等核心概念。 以上就是Java面试中常见的知识点,涵盖了从基础到进阶的各个方面。通过学习和理解这些内容,...

    Java 面试宝典 2010版

    2. **MyBatis**:SQL映射,动态SQL,事务管理等。 3. **Struts或Spring MVC**:理解MVC模式,控制器,视图和模型的交互。 以上就是《Java面试宝典2010版》中涉及的主要知识点,对于求职者来说,扎实掌握这些内容能...

    JAVA笔试题(另附各大公司笔试题)

    - SQL基础:增删改查操作,了解JOIN、子查询、存储过程等高级特性。 - JDBC:连接数据库,执行SQL,处理结果集,事务管理等。 - ORM框架:如Hibernate、MyBatis,理解其工作原理和优势。 以上只是部分知识点,...

    JAVA入门课件必看

    7. **流程控制**:Java提供了if语句、switch语句进行条件判断,以及for、while、do-while循环结构,用于控制程序的执行流程。 8. **数组**:数组是相同类型元素的集合,可以使用索引访问。Java中的数组既可以是一维...

Global site tag (gtag.js) - Google Analytics