zoukankan      html  css  js  c++  java
  • 动态sql语句 入参中存在 数组 或 List

    mybatis中入参存在 数组或List 时,使用foreach 进行动态拼接

    foreach可以在SQL语句中迭代一个集合。它的属性主要有item、index、collection、separator、close、open

    • item:表示集合中每一个元素进行迭代时的别名
    • index:指定一个名称,用于表示在迭代过程中,每次迭代到的位置
    • open:表示该语句以什么开始,in条件语句是以“(”开始 
    • separator:表示在每次迭代之间以什么符号作为分隔符,in条件语句以“,”作为分隔符
    • close:表示该语句以什么结束,in条件语句是以“)”结束
    • collection:该属性必需指定,不同情况下,该属性的值是不一样的
      • 若入参为单参数且参数类型是一个List,collection属性值为list
      • 若入参为单参数且参数类型是一个数组,collection属性值为array
      • 若传入参数为多参数,就需要把它们封装为一个Map进行处理
      • 若传入参数为多参数时,collection属性值为传入的列表名或数组名
    <select id="getUserByRoleId_foreach_array" resultMap="userMapByRole">
      select * from smbms_user where userRole in
        <foreach collection="array" item="roleIds" open="(" separator="," close=")">
          #{roleIds}
        </foreach>
    </select>

    注:mybatis在传入多个参数的时候,要用注解 @Param()命名别名,否则会报错

  • 相关阅读:
    ES6常用语法
    @Autowired和@Resource的区别
    spring boot 引导
    Springboot 日志管理配置logback-spring.xml
    Java异常之checked与unchecked
    @Transactional(rollbackFor=Exception.class)的使用
    使用spring @Scheduled注解执行定时任务、
    Spring入门学习推荐
    Hadoop调优
    关于Flink--ProcessFunction的使用
  • 原文地址:https://www.cnblogs.com/pass-ion/p/13842344.html
Copyright © 2011-2022 走看看