MyBatis 대량 데이터 추가 2 가지 실현 방법

1.for each 탭 을 통 해 sql 연결(수량 이 적 을 때 사용)
a.결합 값()
   public int addPersons(@Param("persons") List<Person> persons);//

<insert id="addPersons">
 insert into person(username,email,gender) VALUES
  <foreach collection="persons" item="person" separator=";">
   (#{person.username},#{person.email},#{person.gender})
  </foreach>
 </insert>

<!--      insert into person(username,email,gender) VALUES("zhangsan","[email protected]","F"),("lisi","[email protected]","F"),... -->
b.insert sql 문 구 를 연결 합 니 다(속성 allow MultiQueries=true 를 설정 해 야 합 니 다)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true //속성 설정 필요
jdbc.username=root
jdbc.password=123public int addPersons(@Param("persons") List<Person> persons);//

<insert id="addPersons">
  insert into person(username,email,gender) VALUES
  <foreach collection="persons" item="person" separator=",">
   (#{person.username},#{person.email},#{person.gender})
  </foreach>
 </insert>
<!--      insert into person(username,email,gender) VALUES("tom","[email protected]","F");
        insert into person(username,email,gender) VALUES("jerry","[email protected]","F");...-->
2.Session 기반 Executor Type 대량 추가
먼저 기록 을 삽입 하 는 방법 을 정의 합 니 다.public int addPerson(User user); //

 <insert id="addPerson" parameterType="user">
  insert into t_user(username,address) VALUES (#{username},#{address})
 </insert>
자바 코드 에서 사용

public void testBatchForExecutor()
  {
    SqlSession sqlSession = this.getSqlSessionFactory().openSession(ExecutorType.BATCH); //  session  ExecutorType      ,  jdbc addBatch  
    PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
    for (int i = 0; i <10000 ; i++)
    {
      personMapper.addPerson(new User("jerry","bj"));
    }
    sqlSession.commit();
    sqlSession.close();
  }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기