ibatis传入list对象
在使用ibatis的时候经常需要传入list对象,sql语句如下。
<select id="GET-PERSONS" parameterClass="java.util.ArrayList" resultClass="pojo.Person">
<![CDATA[
select * from person where id in
]]>
<iterate open="(" close=")" conjunction=",">
#list[]#
</iterate>
</select>
这个是简单的sql语句,对于list中是别的对象的,比如List<Person>这个参数传进来时需要这样使用
<select id="GET-PERSONS" parameterClass="java.util.List" resultClass="pojo.Person">
<![CDATA[
select * from person where id in
]]>
<iterate open="(" close=")" conjunction=",">
<![CDATA[
#list[].id#
]]>
</iterate>
</select>
注意:上面select语句入参用的是parameterClass是java.util.ArrayList类,而不是一个map,这时iterator语句就不需要有property="ids"属性,即
<select id="GET-PERSONSS" parameterClass="java.util.ArrayList" resultClass="pojo.Person">
<![CDATA[
select * from person where id in
]]>
<iterate property="ids" open="(" close=")" conjunction=",">
#ids[]#
</iterate>
</select>
如果有这个属性的话ibatis会从参数中去找属性为ids这个对象,而参数是一个list没有这个属性,因此就会报错:
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in person-sqlmap.xml.
--- The error occurred while preparing the mapped statement for execution.
--- Check the person.GET-PERSONS.
--- Check the parameter map.
--- Cause: com.ibatis.common.beans.ProbeException: Error getting ordinal list fr
om JavaBean. Cause java.lang.StringIndexOutOfBoundsException: String index out o
f range: -1
如果parameter使用map,那么需要在java代码中将这个list封装进map。
ibatis传入list对象的更多相关文章
- ECharts-初始化方法参数不能传入jquery对象
ECharts-初始化方法参数不能传入jquery对象
- 【vue】@click绑定的函数,如何同时传入事件对象和自定义参数
知识很久不用的话,果然是容易忘的... 记记笔记,希望能加深点印象吧. [仅仅传入事件对象] html: <div id="app"> <button @clic ...
- ibatis传入数组或List
小结一下ibatis框架下,传入参数为数组类型或者是List类型的sql写法.标签里面都不需要表名 1.传入字符串数组,不需要标明parameterClasss,数组和List类型对象一样都可以用&l ...
- ibatis使用--SqlMapClient对象
SqlMapClient对象 这个对象是iBatis操作数据库的接口(执行CRUD等操作),它也可以执行事务管理等操作.这个类是我们使用iBATIS的最主要的类.它是线程安全的.通常,将它定义为单例. ...
- Java-List泛型的用处(能够使用传入泛型对象的方法)
List<PageData> varList = setMealService.list(page); for(int i = 0;i < varList.size(); i++){ ...
- 【springmvc】之使用jQuery接收前端传入List对象
前端代码: <form id="person_add" method="post" action="user"> <tab ...
- PHP SOAP如何传入复杂对象
Paymentexpress有一个SOAP服务方法Check3dsEnrollment(String username,String password, EnrolmentCheckRequest t ...
- SpringBoot 传入JSON对象参数
1.请求参数格式必须是正确的JSON. 2.在入参中使用注解@RequestBody,用于接收JSON参数,使其自动转对象 3.关于lombok在此产生的一点小坑,@Builder对@RequestB ...
- PYTHON 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def shifou_space(args): ret = True for a in args: if a.isspace(): ret = False break return ret resul ...
随机推荐
- centOS 7 部署samba
部署samba **每个用户有自己的目录,可以浏览内容,也可以删除** 清空防火墙规则 [root@bogon ~]# iptables -F 安装samba [root@bogon ~]# yum ...
- Python Requests 小技巧总结
关于 Python Requests ,在使用中,总结了一些小技巧把,分享下. 1:保持请求之间的Cookies,我们可以这样做. import requests self.session = req ...
- Oracle expdp
exp 客户端工具expdp 服务端工具 expdp help=y 帮助命令directory 导出目录逻辑名 --查询默认数据 ...
- php7安装及和php5的共存
http://blog.csdn.net/liuxinmingcode/article/details/50319145 http://www.jb51.net/article/109228.htm ...
- 扩展 RequestHandlerBase
RequestHandlerBase 实现接口SolrRequestHandler SearchHandler: 它的所有逻辑来自 搜索组件SearchComponents. handler配置中, ...
- python tips:列表推导
看一个代码: a=[1,2,3,4,5,6,7,8,9] b=[5 if (i >3) else 1 for i in a] print(b) 这就是列表推导. 列表推导一般用在通过一个list ...
- AC日记——[SCOI2012]喵星球上的点名 bzoj 2754
2754 思路: AC自动机暴力处理匹配: 强大的ac自动机,强大的fail树,强大的map,强大的vector,强大的指针: 代码: #include <map> #include &l ...
- java网络编程(套接字)
套接字是java提供一套进行网络通信的API---TCP/UDP: ISO七层模型 物理层 .数据链路层 .传输层-IP. 网络层-UDP/TCP .会话层 . 表示层. 应用层 ---HTTP FT ...
- c# 使用ssh连接远程主机(ssh.net演示)
本教程使用的是ssh.net这个库.项目地址:https://github.com/sshnet/SSH.NET 使用ssh客户端连接远程主机执行命令,并拿到输出结果: using (var sshC ...
- 第八届省赛 B:Quadrat (打表找规律)
Description It is well-known that for any n there are exactly four n-digit numbers (including ones w ...