基于mybatis中数组传递注意事项

目录
  • mybatis中传数组时应当注意的地方
    • 1.直接传递数组
    • 2.将数字放入map中传递
  • mybatis传入参数为数组、list的写法
    • 1.当传入参数为数组
    • 2.当传入参数为集合时

mybatis中传数组时应当注意的地方

parameterType为主要注意点之一,foreach循环为注意点之二

例如如下代码:

1.直接传递数组

如果 parameterType使用的是 数组参数 例如上述的Long[], 则foreach循环 collection中 必须使用 array(其他代码可以忽略主要看以上两点)

2.将数字放入map中传递

如果 parameterType使用的是 数组参数 例如上述的java.util.HashMap,则foreach循环 collection中 使用参数名称即可(其他代码可以忽略主要看以上两点)

mybatis传入参数为数组、list的写法

1.当传入参数为数组

List<ContractRealtion> selectDuplicateSkus(@Param("skuNo") String[] skuNo,@Param("realtionId")Integer realtionId);
  <select id="selectDuplicateSkus" resultMap="BaseResultMap" parameterType="java.util.List">
    SELECT
    <include refid="Base_Column_List" />
     FROM V_CONTRACT_REALTION
     WHERE IS_DEL=0
     and SKU_NO in
     <foreach collection="skuNo" item="item" index="index" open="(" separator="," close=")">
      #{item}
    </foreach>
    <if test="realtionId != null ">
      and CONTRACT_LABLE_ID != #{realtionId,jdbcType=INTEGER}
    </if>
  </select>

2.当传入参数为集合时

 List<InformationSkuData> selectSkuDownSale(List<String> skuNOs);
  <select id="selectSkuDownSale" resultType="com.vedeng.op.information.domain.InformationSkuData" parameterType="java.util.List">
    select SKU_NO as skuNo
    from V_SKU
    where IS_DEL=0
    and SKU_NO in
    <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
      #{item}
    </foreach>
    and IS_ON_SALE=0
      </select>

collection的属性值应当和传过来的参数值相对应

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MyBatis传入数组集合类并使用foreach遍历

    这篇文章主要介绍了MyBatis传入数组集合类并使用foreach遍历,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在mapper中传入数组或集合类,使用foreach标签遍历出其中的值与SQL语句拼接 JAVA dao层接口 public interface UserDao { public List<User> getUsersByCollection(Collection collection); } mapper文件 <sel

  • mybatis条件语句中带数组参数的处理

    目录 mybatis条件语句中带数组参数 这里给出一个示例 这里有必要说明的是foreach标签中的collection属性 mybatis多参数传递(其中包括数组) mapper接口 mapper.xml的配置 mybatis条件语句中带数组参数 如题,在mybatis编写sql语句的时候,可能会遇到in这样的关键字,我们知道in后面需要接上('a','b','c')这样的一个结构.它像一个数组,但是是用括号()包裹的,参数之间还有逗号隔开. 这里因为数组参数是变量,直接通过拼接的方式不可行.

  • MyBatis传入参数为List对象的实现

    SSM框架是JavaWeb必学的框架,虽说基本的增删改查很简单,但是当面临一些特殊情况时,有时还是会显得手足无措,此篇用来记录一些特殊场景下Mybatis框架的应用. 传入参数为List对象 1. 场景复现 首先有如下一张表: MySQL [test]> select * from t_entry_resource; +----+-------------+------+----------+--------+--------+---------------------+ | id | reso

  • Mybatis调用PostgreSQL存储过程实现数组入参传递

    前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: 复制代码 代码如下: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 如上所示,参数是一个int数组,Mybatis提供了对调用存储过程的支持,那么PostgreSQL独有的数组类型作为存储过程的参数又

  • 基于mybatis中数组传递注意事项

    目录 mybatis中传数组时应当注意的地方 1.直接传递数组 2.将数字放入map中传递 mybatis传入参数为数组.list的写法 1.当传入参数为数组 2.当传入参数为集合时 mybatis中传数组时应当注意的地方 parameterType为主要注意点之一,foreach循环为注意点之二 例如如下代码: 1.直接传递数组 如果 parameterType使用的是 数组参数 例如上述的Long[], 则foreach循环 collection中 必须使用 array(其他代码可以忽略主要

  • 基于numpy中数组元素的切片复制方法

    代码1: #!/usr/bin/python import numpy as np arr1 = np.arange(10) print(arr1) slice_data = arr1[3:5] print(slice_data) slice_data[0] = 123 print(slice_data) print(arr1) 类似的代码之前应用过,简单看了一下numpy中的数组切片. 程序的执行结果如下: In [2]: %run exp01.py [0 1 2 3 4 5 6 7 8 9]

  • mybatis中如何传递单个String类型的参数

    目录 如何传递单个String类型的参数 mybatis仅传入一个String类型参数报错 目前我知道有两种方式解决问题 如何传递单个String类型的参数 使用mybatis接口参数只有一个string的时候 如果不指定@Param 的话mybatis去会把parameterType参数默认成接口的参数类型然后对于xml里的#{a}参数 去调用该类型下参数a 的get/set方法然后就报错了. 使用了@Param注解 mybatis就会一一对应赋值就不会导致这个错误. 接口如下: xml文件如

  • 基于mybatis中<include>标签的作用说明

    MyBatis中sql标签定义SQL片段,include标签引用,可以复用SQL片段 sql标签中id属性对应include标签中的refid属性.通过include标签将sql片段和原sql片段进行拼接成一个完整的sql语句进行执行. <sql id="sqlid"> res_type_id,res_type </sql> <select id="selectbyId" resultType="com.property.vo

  • 基于mybatis中test条件中单引号双引号的问题

    目录 test条件中单引号双引号问题 具体原因 动态sql中test的一些问题 mybatis动态sql中OGNL中type=="1"和type='1'的区别 解决方案 test条件中单引号双引号问题 在mybatis中test判断条件中使用单引号会报错 通常使用双引号 通常test后的判断条件写在双引号内,但是当条件中判断使用字符串时应该如下方式开发 <when  test="channel ==null" > <when  test='chan

  • php中array_unshift()修改数组key注意事项分析

    本文实例分析了php中array_unshift()修改数组key注意事项.分享给大家供大家参考,具体如下: 众所周知,array_unshift()用来在数组的开头添加元素,但今天突然发现如果数组的键值是数字类型的(或能转成数字类型的),array_unshift()会修改所有键为数字的元素的Key,真是坑啊 实例: $a=array(111=>"dddddddddddd","112"=>array("one"=>"

  • 基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xf

  • 基于开发中使用UEditor编辑器的注意事项详解

    最近在一个刚结束的一个项目中使用到了UEditor编辑器,下面总结一下遇到的问题以及使用时需要注意的地方: 1. 使用UEditor插件需要先对其进行路径配置: 在ueditor.config.js文件中 配置 ueditor.config.js文件相对Ueditor文件夹的位置: 2. UEditor的图片上传功能: 此功能需将插件部署至服务器时才可生效: 3. UEditor报错"Cannot set property 'innerHTML' of undefined": 错误的原

  • 基于Python中numpy数组的合并实例讲解

    Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np.hstack() - np.vstack() - np.dstack() 其中最泛用的是第一个和第二个.第一个可读性好,比较灵活,但是占内存大.第二个则没有内存占用大的问题. 方法一--append parameters introduction arr 待合并的数组的复制(特别主页是复制,所以要多耗费很多内存) values 用来合并到上述数组

  • 基于js中的存储键值对以及注意事项介绍

    前端有时候需要存储键值对,需要主要的一点是键必须为字符串,重要的再次说明,键需要为字符串. 重点内容 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jque

随机推荐