springboot 연구 노트 - JDBC를 연결이 자동으로 테이블을 생성하도록 구성

  먼저 springboot 프로젝트를 생성하고, 상세한 설명은 생략한다.

  프로젝트 구조

  

  pom.xml 파일 구성

  

<? XML 버젼 = "1.0"인코딩 = "UTF-8" ?> 
< 프로젝트 의 xmlns = "http://maven.apache.org/POM/4.0.0" 의 xmlns :이 xsi = "http://www.w3.org / 2001 / 된 XMLSchema 인스턴스 " 
    는 xsi :의 schemaLocation ="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd " > 
    < modelVersion > 4.0.0 </ modelVersion > 
    < 부모 > 
        < 의 groupId > org.springframework.boot </ 의 groupId > 
        < artifactId를 >
        < 버전 > 2.1.8.RELEASE </ 버전 > 
        < relativepath를 />  <! - 저장소에서 룩업 상위 -> 
    </ 부모 > 
    < 의 groupId > com.exampleatguigu </ 의 groupId > 
    < artifactId를 > springboot-06 - 데이터 - JDBC </ artifactId를 > 
    < 버전 > 0.0.1-SNAPSHOT </ 버전 > 
    < 이름 > springboot-06-데이터 JDBC </ 이름 > 
    <기술> 봄 부팅에 대한 데모 프로젝트 </ 설명 > 

    < 속성 > 
        < java.version > 1.8 </ java.version > 
    </ 속성 > 

    < 종속성 > 
        < 의존성 > 
            < 의 groupId > org.springframework.boot </ 의 groupId > 
            < artifactId를 > 스프링 부팅 스타터 웹 </ artifactId를 > 
        </ 의존성 > 
     <! -添加JDBC依赖-> <의존성 >
        
            < 의 groupId > org.springframework.boot </ 의 groupId > 
            < artifactId를 > 스프링 부팅 스타터 JDBC </ artifactId를 > 
        </ 의존성 > 
      <! -添加mysql을驱动包-> < 의존성 > < 의 groupId > MySQL의 </ 의 groupId > < artifactId를 > MySQL을 커넥터 자바 </ artifactId를 > < 범위 > 런타임 </ 범위 > </ 의존성 ><
        
            
            
            
        
        의존성 > 
            < 의 groupId > org.springframework.boot </ 의 groupId > 
            < artifactId를 > 스프링 부팅 스타터 테스트 </ artifactId를 > 
            < 범위 > 시험 </ 범위 > 
        </ 의존성 > 
    </ 의존성 > 

    < 빌드 > 
        < 플러그인 > 
            < 플러그인 > 
                < 의 groupId > org.springframework.boot </ 의 groupId > 
                <artifactId를 >스프링 부팅 받는다는 - 플러그인 </ artifactId를 > 
            </ 플러그인 > 
        </ 플러그인 > 
    </ 구축 > 

</ 프로젝트 >

  YML 구성

 

 

 나는 springboot2.1.18 버전을 사용하기 때문에이 메모는 주로 스키마 버전 2.x 구성, 초기화 모드에 기록 된 후, : 항상 기본 역할의 구성은 자동 삽입 클래스 경로에 저장된 SQL 파일을 만드는 것입니다 데이터베이스는 마우스 후 YML 파일 초기화 모드에 따른 읽기 소스 분석 프로그램에 Ctrl 키를 클릭을 선택합니다

  첫째, 파일을 입력 DataSourceProperties.java

 
 
// initializationMode 구성 파일 YML로부터 수신 된 값을 나타낸다
공개  공극 setInitializationMode (DataSourceInitializationMode initializationMode) {
          .initializationMode = initializationMode; 
    }
// 열거 치 DataSourceInitializationMode 클래스
공공  열거 DataSourceInitializationMode { 
    항상, 
    임베디드, 
    NEVER; 

    개인 DataSourceInitializationMode () { 
    } 
}

 광원부는, 초기화시에 기록 열거 값을 기록

    DataSourceInitializer.java 파일의 IsEnabled 메소드는 열거 된 세 개의 논리 값에 기초하여 판정한다

//只有초기화 모드配置值为ALWAYS时才会返回진짜야 
전용
부울 의 IsEnabled () { DataSourceInitializationMode 모드 = .properties.getInitializationMode (); 경우 (모드 == DataSourceInitializationMode.NEVER) { 반환 거짓 ; } 경우 (모드 == DataSourceInitializationMode.EMBEDDED &&! isEmbedded ()) { 반환 거짓 ; } 반환 사실 ; }

  소스 코드의 스키마 부분을 만들려면 아래 봐

/ ** 
     * 스키마는 필요한 만드는 경우. 
     * @return { @code true로를 한 경우} 생성 된 스키마는 WAS 
     * @see getSchema 번호 () DataSourceProperties
      * / 
    공공  부울 createSchema () { 
        목록 <리소스> = getScripts 스크립트 ( "봄. datasource.schema " 은이 .properties.getSchema (),"스키마 " );
         만약에 (! scripts.isEmpty ()) { 
        //의 IsEnabled 메서드 호출이 CLASSPATH의 SQL 파일을 실행할지 여부를 결정하고, 때 구성 파일 YML ALAYWS 값에만 적용 데이터베이스 테이블이 RUNSCRIPT 방법으로 검증 한 후 수행됩니다 만들
경우 (! 의 IsEnabled ()) { (logger.debug"장애인 초기화 (DDL 스크립트를 실행하지 않음)" ); 돌아 거짓 ; } 문자열 사용자 이름 = .properties.getSchemaUsername (); 문자열 비밀 번호 = .properties.getSchemaPassword (); runScripts (스크립트, 사용자 이름, 암호); } 반환 ! scripts.isEmpty (); }
개인  무효 runScripts (목록 <자원> 자원, 문자열 이름, 문자열 암호) {
         경우 (resources.isEmpty ()) {
             반환 ; 
        } 
        ResourceDatabasePopulator populator = 새로운 ResourceDatabasePopulator (); 
        populator.setContinueOnError ( .properties.isContinueOnError ()); 
        populator.setSeparator ( .properties.getSeparator ());
        경우 (  .properties.getSqlScriptEncoding ()! = null이 ) { 
            populator.setSqlScriptEncoding ( . .properties.getSqlScriptEncoding () 이름 ()); 
        } 
        에 대한 (자원 자원 : 자원) { 
            populator.addScript (자원); 
        } 
        데이터 소스 데이터 소스 = .dataSource;
        경우 (StringUtils.hasText (사용자 이름) && StringUtils.hasText (비밀번호)) { 
            은 dataSource = DataSourceBuilder.create ( .properties.getClassLoader ()) 
                    .driverClassName (  .properties.determineDriverClassName ()). URL ( .properties.determineUrl ()) 
                    .username (사용자 이름) .password (비밀번호) .build ();
        }  
        DatabasePopulatorUtils.execute (populator,은 dataSource);
    }

당신은 코드가 원하는 결과를 달성하지 않았다 부여하지 않고 실행 볼 때 소스, 향후 버전 2.x에서 규칙 구성을 많이 추가, 짧은에, 우리는 관련 구성이 누락되어 있는지 확인한다이 시간을 단계적으로 게시하지.

결과 :

  

 

추천

출처www.cnblogs.com/3wweblogs-a/p/11530361.html