• MyBatis向数据库中批量插入数据


    Foreach标签

    foreach:

    collection:指定要遍历的集合;

    表示传入过来的参数的数据类型。该参数为必选。要做 foreach 的对象,作为入参时,List 对象默认用 list 代替作为键,

    数组对象有 array 代替作为键,Map 对象没有默认的键。当然在作为入参时可以使用 @Param(keyName) 来设置键,

    设置 keyName 后,list,array 将会失效

    item:将当前遍历出的元素赋值给指定的变量,然后用#{变量名},就能取出变量的值,也就是当前遍历出的元素

    separator:每个元素之间的分隔符, select * from Emp where id in(1,2,3)相当于1,2,3之间的","

    open:以为开始

    closse:以什么结束

    Index:索引,遍历list的时候index就是索引,遍历map的时候index表示的就是mapkey,item就是map的值.

    DAO接口中定义的方法:

    public interface EmpMapper {

    //使用foreach

    public List<Emp> getEmpsByConditionLike(@Param("ids")List<Integer> ids);

    }

    @Param("ids") 将入参改名为ids 在标签 froeach中使用

    映射文件:

    <mapper namespace="cn.bdqn.mybatis.dao.EmpMapper">

    <select id="getEmpsByConditionLike" resultType="cn.bdqn.mybatis.been.Emp">

    select * from Emp

    where id in

    <foreach collection="ids" item="item_id" open="(" separator=","

    close=")">

    #{item_id}

    </foreach>

    </select>

    </mapper>

    测试代码:

    public static void main(String[] args) throws IOException {

    String resource="mybatis-config.xml";

    InputStream resourceAsStream = Resources.getResourceAsStream(resource);

    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

    SqlSession session = sessionFactory.openSession();

    EmpMapper mapper = session.getMapper(EmpMapper.class);

    List list = new ArrayList();

    list.add(1);

    list.add(2);

    List<Emp> emps=mapper.getEmpsByConditionLike(list);

    for (Emp emp2 : emps) {

    System.out.println(emp2);

    }

    Foreach批量插入:

    映射配置文件

    <!--

    foreach向数据库中批量插入记录

    public void insertSum(@Param("emps")List<Emp> emps );

      -->

      <insert id="insertSum">

       insert into emp(last_name,email,gender,d_id) values

       <foreach collection="emps" item="emp"  separator="," >

       (#{emp.last_name},#{emp.email},#{emp.gender},#{emp.d_id})

       </foreach>

      </insert>

    本人创建了一个java架构师资料分享群,欢迎工作两年以上的同学加入,一起讨论,群号:943248961,或扫码加入

  • 相关阅读:
    jsp 页面获取当前路径
    html5 页面音频
    微信关于网页授权access_token和普通access_token的区别
    Texlive source
    vscode 快捷键
    vscode setting
    vscode extension 插件管理
    what
    linux manual
    java tool type
  • 原文地址:https://www.cnblogs.com/zqr99/p/7606950.html
Copyright © 2020-2023  润新知