MyBatis传入List集合查询数据问题

2024-03-04 0 4,736

目录

MyBatis传入List集合查询数据

使用的是SSM框架数据库是MySQL,做查询的时候传入List集合,使用SQL语句的in方式查询数据

主要有两点问题

我的List集合是利用的另外一个语句查询出来的,传入参数是int类型,返回值是int类型的List集合:

List<Integer> select(Integer id);
<select id=\"select\" resultType=\"java.util.List\"
    parameterType=\"java.lang.Integer\">
    select id
    from section
    where status=\'A\'
    and unit_id=#{id,jdbcType=INTEGER}
</select>

这是我第一次的时候使用的返回值类型(java.util.List),这种情况下在我执行的时候会报错:java.lang.UnsupportedOperationException

其实这里如果我们是要返回指定类型的集合直接写java.lang.Integer(int类型)java.lang.String(字符串)等等就可以了,当然也可以自定义一个resultMap

<select id=\"select\" resultType=\"java.lang.Integer\"
    parameterType=\"java.lang.Integer\">
    select id
    from section
    where status=\'A\'
    and unit_id=#{id,jdbcType=INTEGER}
</select>

上面是通过一个id查询出List集合,下面是将查到的这个List集合放入查询条件中:

List<Test> selectById(List<Integer> id);
<select id=\"selectById\" parameterType=\"java.util.List\"
    resultMap=\"BaseResultMap\">
    select * from test
    where status = \'A\'
    and id in
    <foreach collection=\"list\" index=\"index\" item=\"item\" open=\"(\"
        separator=\",\" close=\")\">
        #{item}
    </foreach>
</select>

上述的查询语句可以整合在一个sql语句中,这里为了创造list数据所以分开了。

使用foreach 语句循环集合中的数据,item就是循环到的数据,如果你是一个复杂类型的数据做批量插入的话可以使用item.属性名 的方式获取对应值,类似于java的foreach循环语句,某些时候可能传入的是Array数组,毕竟都说Array比List效率高,这种时候和上述方法类似,也是foreach语句。具体的分析后续更新。

MyBatis传入List集合批量删除

Model

public class FastDFSModel {
    private String pathId;
    private String modelId;
    private String csvpath;
    private String resultpath;
    private String updatetime;
    }

Dao

import org.apache.ibatis.annotations.Param;
 void deleteDateById(@Param(\"list\") List<FastDFSModel> deleteList);

mapper

其中parameterType写为list

foreach 中的collection写为"list"

item 为遍历的每一项,代表着model

在变量中用#{item.pathId}来获取值

此业务为通过id进行删除

其中open="(" separator="," close=")"为拼接的in查询,把id用逗号拼接起来

 <delete id=\"deleteDateById\" parameterType=\"java.util.List\">
        delete from T_FASTDFS_PATH t where t.path_id in
        <foreach item=\"item\" collection=\"list\" open=\"(\" separator=\",\" close=\")\">
            #{item.pathId,jdbcType=VARCHAR}
        </foreach>
    </delete>

控制台打印如下

delete from T_FASTDFS_PATH t where t.path_id in ( ? , ? , ? ) 
 PreparedStatement - ==> Parameters: 2(String), 1(String), 3(String)

总结

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

资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 MyBatis传入List集合查询数据问题 http://www.20zxx.cn/808979/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务