당신 의 MyBatis-Plus 에 대량으로 삽 입 된 날 개 를 달 아 드 립 니 다(추천)

머리말
안녕하세요,저 는 이 형 입 니 다.
MyBatis-Plus(MP 로 약칭)를 사용 한 사람들 은 모두 MyBatis 의 증강 도구 라 는 것 을 알 고 있다.MyBatis 를 바탕 으로 증강 만 하고 변 하지 않 으 며 개발 을 간소화 하고 효율 을 높이 기 위해 태 어 난 것 이다.
특징.
4.567917.무 침입:강화 만 하고 변 화 를 하지 않 으 며 도입 은 기 존의 공사 에 영향 을 주지 않 습 니 다.예 를 들 어 실크 처럼 매 끄 럽 습 니 다4.567917.손실 이 적 음:시작 하면 자동 으로 기본 CURD 를 주입 하고 성능 은 기본적으로 손실 이 없 으 며 대상 을 대상 으로 직접 조작 합 니 다
  • 강력 한 CRUD 작업:유 니 버 설 Mapper,유 니 버 설 서비스 가 내장 되 어 있 고 소량의 설정 만으로 표 의 대부분 CRUD 작업 을 실현 할 수 있 으 며 더욱 강력 한 조건 구조 기 를 사용 하여 각종 사용 수 요 를 만족 시 킬 수 있 습 니 다
  • Lambda 형식 호출 지원:Lambda 표현 식 을 통 해 각종 조회 조건 을 편리 하 게 작성 할 수 있 습 니 다.필드 의 오 류 를 걱정 하지 않 아 도 됩 니 다
  • 메 인 키 자동 생 성 지원:4 가지 메 인 키 정책(분포 식 유일한 ID 생 성기-Sequence 포함)을 지원 하고 자 유 롭 게 설정 할 수 있 으 며 메 인 키 문 제 를 완벽 하 게 해결 할 수 있 습 니 다
  • ActiveRecord 모드 지원:ActiveRecord 형식 호출 을 지원 하고 실체 클래스 는 모델 클래스 만 계승 하면 강력 한 CRUD 작업 을 할 수 있 습 니 다
  • 사용자 정의 전역 유 니 버 설 작업 지원:전역 유 니 버 설 방법 주입 지원(Write once,use anywhere)
  • 내장 코드 생 성기:코드 나 Maven 플러그 인 을 사용 하면 Mapper,Model,Service,Controller 계층 코드 를 신속하게 생 성 할 수 있 고 템 플 릿 엔진 을 지원 하 며 초 다 중 사용자 정의 설정 등 을 사용 할 수 있 습 니 다
  • 내 장 된 페이지 플러그 인:MyBatis 물리 적 페이지 를 바탕 으로 개발 자 는 구체 적 인 조작 에 관심 을 가 질 필요 가 없습니다.플러그 인 을 설정 한 후에 페이지 를 쓰 는 것 은 일반 List 조회 와 같 습 니 다
  • 페이지 플러그 인 은 다양한 데이터 베 이 스 를 지원 합 니 다.MySQL,MariaDB,Oracle,DB2,H2,HSQL,SQLite,Postgre,SQLServer 등 다양한 데이터 베 이 스 를 지원 합 니 다
  • 내 장 된 성능 분석 플러그 인:Sql 문 구 를 출력 할 수 있 고 실행 시간 입 니 다.테스트 를 개발 할 때 이 기능 을 사용 하 는 것 을 권장 합 니 다.느 린 조 회 를 신속하게 찾 을 수 있 습 니 다
  • 전체 차단 플러그 인 내장:전체 표 delete,update 작업 스마트 분석 차단 을 제공 하고 차단 규칙 을 사용자 정의 하여 오 작 동 을 예방 할 수 있 습 니 다본문
    실제 프로젝트 개발 에서 우 리 는 데 이 터 를 데이터베이스 에 대량으로 저장 하 는 수요 가 있 습 니 다.여러분 은 많 든 적 든 mybatis-plus 로 이 루어 진 적 이 있 죠?
    구성 요소 의존
    우선 Maven 을 통 해 my batis-plus 오픈 소스 구성 요 소 를 도입 하고 pom.xml 파일 에 다음 코드 를 추가 해 야 합 니 다.
    
    <!--mybatis-->
    <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.4.0</version>
    </dependency>
    <!--mybatis plus extension,   mybatis plus core-->
    <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-extension</artifactId>
     <version>3.4.0</version>
    </dependency>
    원본 코드 를 보면 API 인터페이스 가 제공 하 는 대량 삽입 인 터 페 이 스 를 발견 할 수 있 습 니 다.

    서 비 스 를 시작 한 후 Postman 으로 디 버 깅 합 니 다.배경 인쇄 는 다음 과 같 습 니 다.

    그림 에서 볼 수 있 듯 이 이른바 대량 삽입 인터페이스,사실은 하나의 for 순환 삽입,Oh,My God!그야말로 악몽 과도 같다.

    설마 손 으로 이 루 겠 다 는 건 아니 겠 지?이렇게...
    
    INSERT INTO test (a, b, c) VALUES
    <foreach collection="list" item="item" separator=",">
     (#{item.a}, #{item.b}, #{item.c})
    </foreach>
    저 희 는 my batis-plus 의 소스 코드 를 읽 습 니 다.com.baomidou.my batisplus.extension.inject.methods.InsertBatch Some Column 가방 에 코드 를 대량으로 삽입 하여 이 루어 졌 습 니 다.여 기 는 소스 코드 를 붙 이지 않 겠 습 니 다.여러분 이 직접 추적 해 보 세 요.수 동 으로 확장 해 보 겠 습 니 다.
    확장 코드
    Talk is cheap,show me the code.먼저 코드 를 보 여 드 리 고 왜 이렇게 실현 되 었 는 지 천천히 설명해 드 리 겠 습 니 다.

    MybatisPlusConfig 파일 에 이 Bean 을 주입 합 니 다.코드 는 다음 과 같 습 니 다.
    
    @Configuration
    public class MybatisPlusConfig {
    
     /**
     *     
     *
     * @return PaginationInterceptor
     */
     @Bean
     public PaginationInterceptor paginationInterceptor() {
     return new PaginationInterceptor();
     }
    
     @Bean
     public EasySqlInjector easySqlInjector() {
     return new EasySqlInjector();
     }
    }
    자체 테이프 의 BaseMapper 를 확장 해 야 합 니 다.코드 는 다음 과 같 습 니 다.
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    
    import java.util.Collection;
    
    /**
     *      Mapper,        
     *
     * @author     
     */
    public interface EasyBaseMapper<T> extends BaseMapper<T> {
    
     /**
     *          mysql
     *
     * @param entityList     
     * @return     
     */
     Integer insertBatchSomeColumn(Collection<T> entityList);
    }
    우 리 는 업무 류 에서 아래 의 인용 을 실현 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.
    
    /**
     *     mapper  ,       EasyBaseMapper
     *
     * @author     
     */
    @Mapper
    public interface TestMapper extends EasyBaseMapper<Test> {
    }
    
    /**
     *        ,    
     *
     * @author     
     */
    @Service
    public class TestServiceImpl extends ServiceImpl<TestMapper, Test> implements TestService {
    
     @Override
     public Integer testBatch(Collection<Test> testList) {
     return baseMapper.insertBatchSomeColumn(testList);
     }
    BaseMapper 에 서 는 직접 인용 할 수 없 기 때문에 왜 직접 인용 할 수 없 습 니까?MySql 데이터베이스 만 지원 한다 고 하 니 저 자 는 내 장 된 이유 가 없 죠?
    당신 에 게 줄 MyBatis-Plus 에 대량으로 삽 입 된 날 개 를 달 아 주 는 글 을 소개 합 니 다.더 많은 관련 MyBatis Plus 대량 삽입 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기