Mybatis foreach批量插入语法的使用

本文介绍了如何在MyBatis中使用foreach标签实现列表和映射对象的批量插入,包括`<foreach>`的属性如collection、item、index以及separator的应用实例。通过VideoMapper.xml和Java代码展示,适合数据库操作初学者了解其在实际项目中的运用。
摘要由CSDN通过智能技术生成

foreach: 用于循环拼接的内置标签,常用于批量新增、in查询等常见
包含以下属性:
collection:必填,值为要迭代循环的集合类型,情况有多种
入参是List类型的时候,collection属性值为list
入参是Map类型的时候,collection 属性值为map的key值

item:每一个元素进行迭代时的别名
index:索引的属性名,在集合数组情况下值为当前索引值,当迭代对象是map时,这个值是
map的key
open:整个循环内容的开头字符串
close:整个循环内容的结尾字符串
separator: 每次循环的分隔符

代码:
VideoMapper.xml

<insert id="addBatch" parameterType="work.yspan.online_class.domain.Video" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
        insert into video (title, summary, cover_img, price, create_time,point)
        values
        <foreach collection="list" item="video" separator=",">
            (#{video.title,jdbcType=VARCHAR},#{video.summary,jdbcType=VARCHAR},#{video.coverImg,jdbcType=VARCHAR},#{video.price,jdbcType=INTEGER },#{video.createTime,jdbcType=TIMESTAMP},#{video.point,jdbcType=DOUBLE })
        </foreach>

    </insert>

VideoMapper.java:

public interface VideoMapper {

    /**
     * 批量插入数据
     */
    int addBatch(List<Video> list);
}

测试方法代码:

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

        //读取配置文件
        String resouce="config/mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resouce);

        //构建Session工厂
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        //获取Session
        try(SqlSession sqlSession=sqlSessionFactory.openSession()){

            VideoMapper videoMapper=sqlSession.getMapper(VideoMapper.class);
            
            Video video1=new Video();
            video1.setTitle("ssm1");
            video1.setSummary("这是ssm课程1");
            video1.setCoverImg("http://yspan.work:8232");
            video1.setPrice(8811);
            video1.setCreateTime(new Date());
            video1.setPoint(8.1);

            Video video2=new Video();
            video2.setTitle("ssm2");
            video2.setSummary("这是ssm课程2");
            video2.setCoverImg("http://yspan.work:8232");
            video2.setPrice(8822);
            video2.setCreateTime(new Date());
            video2.setPoint(8.2);

            List<Video> list=new ArrayList<>();
            list.add(video1);
            list.add(video2);

            int row=videoMapper.addBatch(list);
            System.out.println(row);
            System.out.println(list.toString());
        }
    }
}

效果截图:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值