MyBatis的批量添加及相应问题

MyBatis的批量添加
先附上本次的代码:

mapper层

//批量增加:增加两个人
    public void inserts(List<User> userList);

mapper.xml

<insert id="inserts" parameterType="java.util.List">
        INSERT INTO
        `user`(`username`,`birthday`,`sex`,`address`)
        VALUES
        <foreach collection="list" item="user" separator=",">
            (#{user.username} ,#{user.birthday} ,#{user.sex} ,#{user.address})
        </foreach>
    </insert>

Test测试类


public class UserTest {
    //面向接口编程,创建私有成员变量工厂类
    private SqlSessionFactory sqlSessionFactory;

    @Before
    public void upSet() {
        try {
            //先解析SqlMapConfig.xml文件
            InputStream stream = Resources.getResourceAsStream("SqlMapConfig.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 @Test
    public void insertBatch() {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        UserVo userVo = new UserVo();

        List<User> list = new ArrayList<>();
        list.add(new User("张三", new Date(), "男", "山东"));
        list.add(new User("李四", new Date(), "女", "河北"));
        list.add(new User("王五", new Date(), "男", "北京"));
        userVo.setElements(list);
        //userMapper.insert(userVo);
        userMapper.inserts(list);
    }
    }

总结

  1. 批量添加有两种方式:一种是批量循环values,另一种则是循环sql语句
    但这些的前提都是要配置一个变量,在数据库连接池的url后面
allowMultiQueries=true

总体是这样:

jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&serverTimezone=GMT%2B8&allowMultiQueries=true

  1. 第一种:mapper.xml的分隔符要用,最终形成的sql语句是这样
INSERT INTO `user`(`username`,`birthday`,`sex`,`address`) VALUES (? ,? ,? ,?) , (? ,? ,? ,?) , (? ,? ,? ,?)
  1. 第二种:分隔sql语句的分隔符要用;为了能让传入的sql语句被数据库识别,

重点

如果不在url后面进行配置,则无法运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值