在使用ibatis的时候经常需要传入list对象,sql语句如下。

  1. <select id="GET-PERSONS" parameterClass="java.util.ArrayList" resultClass="pojo.Person">
  2. <![CDATA[
  3. select * from person where id in
  4. ]]>
  5. <iterate open="(" close=")" conjunction=",">
  6. #list[]#
  7. </iterate>
  8. </select>

这个是简单的sql语句,对于list中是别的对象的,比如List<Person>这个参数传进来时需要这样使用

  1. <select id="GET-PERSONS" parameterClass="java.util.List" resultClass="pojo.Person">
  2. <![CDATA[
  3. select * from person where id in
  4. ]]>
  5. <iterate open="(" close=")" conjunction=",">
  6. <![CDATA[
  7. #list[].id#
  8. ]]>
  9. </iterate>
  10. </select>

注意:上面select语句入参用的是parameterClass是java.util.ArrayList类,而不是一个map,这时iterator语句就不需要有property="ids"属性,即

  1. <select id="GET-PERSONSS" parameterClass="java.util.ArrayList" resultClass="pojo.Person">
  2. <![CDATA[
  3. select * from person where id in
  4. ]]>
  5. <iterate property="ids" open="(" close=")" conjunction=",">
  6. #ids[]#
  7. </iterate>
  8. </select>

如果有这个属性的话ibatis会从参数中去找属性为ids这个对象,而参数是一个list没有这个属性,因此就会报错:

  1. Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
  2. --- The error occurred in person-sqlmap.xml.
  3. --- The error occurred while preparing the mapped statement for execution.
  4. --- Check the person.GET-PERSONS.
  5. --- Check the parameter map.
  6. --- Cause: com.ibatis.common.beans.ProbeException: Error getting ordinal list fr
  7. om JavaBean. Cause java.lang.StringIndexOutOfBoundsException: String index out o
  8. f range: -1

如果parameter使用map,那么需要在java代码中将这个list封装进map。

ibatis传入list对象的更多相关文章

  1. ECharts-初始化方法参数不能传入jquery对象

    ECharts-初始化方法参数不能传入jquery对象

  2. 【vue】@click绑定的函数,如何同时传入事件对象和自定义参数

    知识很久不用的话,果然是容易忘的... 记记笔记,希望能加深点印象吧. [仅仅传入事件对象] html: <div id="app"> <button @clic ...

  3. ibatis传入数组或List

    小结一下ibatis框架下,传入参数为数组类型或者是List类型的sql写法.标签里面都不需要表名 1.传入字符串数组,不需要标明parameterClasss,数组和List类型对象一样都可以用&l ...

  4. ibatis使用--SqlMapClient对象

    SqlMapClient对象 这个对象是iBatis操作数据库的接口(执行CRUD等操作),它也可以执行事务管理等操作.这个类是我们使用iBATIS的最主要的类.它是线程安全的.通常,将它定义为单例. ...

  5. Java-List泛型的用处(能够使用传入泛型对象的方法)

    List<PageData> varList = setMealService.list(page); for(int i = 0;i < varList.size(); i++){ ...

  6. 【springmvc】之使用jQuery接收前端传入List对象

    前端代码: <form id="person_add" method="post" action="user"> <tab ...

  7. PHP SOAP如何传入复杂对象

    Paymentexpress有一个SOAP服务方法Check3dsEnrollment(String username,String password, EnrolmentCheckRequest t ...

  8. SpringBoot 传入JSON对象参数

    1.请求参数格式必须是正确的JSON. 2.在入参中使用注解@RequestBody,用于接收JSON参数,使其自动转对象 3.关于lombok在此产生的一点小坑,@Builder对@RequestB ...

  9. PYTHON 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。

    def shifou_space(args): ret = True for a in args: if a.isspace(): ret = False break return ret resul ...

随机推荐

  1. BeeFramework 系列一 安装篇(Arc)

    http://ilikeido.iteye.com/blog/1881390 Beeframework 是一款iOS快速开发框架,它以UISignal强大的路由功能替代原有Delegate方式,完成复 ...

  2. POJ3466(01背包变形)

    Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) ...

  3. 转一篇CF题目的博客

    题意: 给你一颗n(n<=10^5)个节点树根为1的树,然后进行dfs,求每个点,在dfs中被访问时间的期望. let starting_time be an array of length n ...

  4. 解决:org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform

    centos7.3 启动tomcat 出现错误: 八月 08, 2017 4:58:47 下午 org.apache.catalina.core.StandardEngine startInterna ...

  5. [ Mariadb ] 通过HAProxy代理后端Mariadb实现负载均衡

    一.本次环境架构图 由于公司内网服务器有限,所以后端采用Mariadb自带的mysql_multi模型实现多实例. mysql的多实例有两种方式可以实现,两种方式各有利弊. 1.使用多个配置文件启动不 ...

  6. Selenium2+python自动化60-异常后截图(screenshot)【转载】

    前言 在执行用例过程中由于是无人值守的,用例运行报错的时候,我们希望能对当前屏幕截图,留下证据. 在写用例的时候,最后一步是断言,可以把截图的动作放在断言这里,那么如何在断言失败后截图呢? 一.截图方 ...

  7. Activiti 6.0 入门篇

    从Activiti网站下载Activiti UI WAR文件(或百度云) 将下载的activiti-app.war复制到Tomcat的webapps目录. 启动Tomcat 打开浏览器并转到 http ...

  8. hdu 1224(动态规划 DAG上的最长路)

    Free DIY Tour Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. linux基础学习目录

    以下用一个表格来罗列linux默认的目录或文件及其用途: 目录/文件 用途 来源 / /处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口,所有的目录.文件.设备都在/之下. - / ...

  10. Macaca 自动化录制工具uirecorder使用入门

    Q&A PC端执行用例前,一定要运行selenium-standalone start,否则会出现这个问题:https://github.com/alibaba/uirecorder/issu ...