博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis动态SQL--传入参数为集合,数组类型
阅读量:4668 次
发布时间:2019-06-09

本文共 3185 字,大约阅读时间需要 10 分钟。

当接口方法的传入类型为List 或数组Array 时,我们该如何操作


/**     *      * 1.单个的参数Mybatis不会做特殊处理     *     #{这里随便写什么都可以}    它都能把这里面的值取到     * 2.传入对象POJO(普通的java类)..     *      #{对象的属性名称}     * 3.多个参数。Mybatis会做特殊处理。会把传入的参数自动封装成Map类型     *      Map 的key值就是从param1...paramN ..     *      map.put("param1",name)     *      map.put("param2,id")     *      @param("name") 可以使用这个注解 来自定义Map封装数据的key值。     * 4.直接传入Map     *      * 5.Collection(集合)类型(List,Set) ,数组。     *      Mybatis也会做特殊处理。。     *      如果是List或者Set  封装到map中      *      如果是数组     *      map.put("array",你传入的数组)     */

先学习当传入参数是List

/Mybatis02/src/com/chen/dao/GoodsDao2.java

//批量操作  (返回影响了几条数据的一个int 数字)    public Integer deleteByList(List
list);

然后把表映射ML文件 写好具体实现

/Mybatis02/config/mappers/GoodsInfoMapper.xml

delete from goods where id in
#{haha}

现在我去数据库表goods里新插入3条数据

1175089-20171006103952833-374682979.png

public class Start2 {    public static void main(String[] args) throws IOException {                String resource = "mybatis-conf.xml";        InputStream  inputStream = Resources.getResourceAsStream(resource);        //创建SqlSessionFactory        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);        //true表示自动提交。否则需要使用commit方法才会提交。默认是false        SqlSession session = sqlSessionFactory.openSession();                //拿到接口的代理对象        GoodsDao2 dao=session.getMapper(GoodsDao2.class);        //拿到了dao这个对象接下来就可以创建sql语句了;(直接调用接口方法)                 List list =new ArrayList();         list.add("73"); //准备删除id为73的数据         list.add("75"); //准备删除id为75的数据         int x= dao.deleteByList(list); //这个方法有个int返回值,会告诉你已影响了多少条数据         System.out.println(x);               //如果上面不设置自动提交表单,那么就需要commit方法        session.commit();    }}

点击运行

1175089-20171006105559318-2035385291.png

表示,影响了2条数据(既 删除了2条数据)

现在查看下数据库表 发现
1175089-20171006105713380-549759402.png

表里 id=73 和id=75 的数据 已经被删除了

成功

现在学习当传入参数是Array

/Mybatis02/src/com/chen/dao/GoodsDao2.java

//(一般都是根据  id来删除数据 ,我的数据是varchar类型,对应的是string类型的数组    public Integer deleteByArray(String[] str );

然后老套路第二步,在表映射XML文件里写好具体实现

/Mybatis02/config/mappers/GoodsInfoMapper.xml

delete from goods where id in
#{haha}

老套路第三步,主入口类设置具体 传入值

/Mybatis02/src/test/Start2.java

public class Start2 {    public static void main(String[] args) throws IOException {                String resource = "mybatis-conf.xml";        InputStream  inputStream = Resources.getResourceAsStream(resource);        //创建SqlSessionFactory        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);        //true表示自动提交。否则需要使用commit方法才会提交。默认是false        SqlSession session = sqlSessionFactory.openSession();                //拿到接口的代理对象        GoodsDao2 dao=session.getMapper(GoodsDao2.class);        //拿到了dao这个对象接下来就可以创建sql语句了;(直接调用接口方法)                String[] strs={"101","102","103"};             int x= dao.deleteByArray(strs); //这个方法有个int返回值,会告诉你已影响了多少条数据             System.out.println(x);               //如果上面不设置自动提交表单,那么就需要commit方法        session.commit();    }}

我现在在数据库表goods里新插入3条数据,它们都id我设为101,102,103看看等下能不能把他们删除

1175089-20171006110813318-1127217780.png

点击运行

1175089-20171006110940943-1500889366.png

输出结果3,表面已经影响了3条数据,那么是不是数据库相关信息已经被删了呢,现在看下数据库

1175089-20171006111146568-566108917.png

成功

转载于:https://www.cnblogs.com/czy16/p/7631246.html

你可能感兴趣的文章
更改TFS项目中的SharePoint网站端口
查看>>
C#属性
查看>>
大道至简 第二章 读后随笔
查看>>
Python多线程报错之RuntimeError
查看>>
EOS1.1版本新特性介绍
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
重新打包system.img
查看>>
MySQL user表详解
查看>>
Http常见状态码
查看>>
centos7 安装pip
查看>>
Java之JDBC①
查看>>
date()---求N个月后的1号
查看>>
机器学习九大挑战(转载)
查看>>
加密流量分析
查看>>
Python字符串方法
查看>>
.NET笔试题(关于迭代的:遍历XML中的FileName)
查看>>
jQuery修改margin
查看>>
thread and process
查看>>
Corner case
查看>>
Anagrams
查看>>