나는 최근에 Java를 배우고 있었고 Mybatis가 Java 모집에 상당히 자주 나타나는 것을 발견했으며, 이는 Java 개발에 더 자주 사용되는 데이터베이스 ORM 프레임 워크 일 수 있습니다. 그래서 Spring Boot와 Mybatis의 통합을 연구하려고했습니다.
1. pom.xml 파일에 다음 구성을 추가하십시오
<pectionies> <pectinement> <groupId> org.springframework.boot </groupid> <artifactid> Spring-Boot-Starter-web </artifactid> </dependency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-test </artifactid> test> </의존성> <pectionency> <groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-jdbc </artifactid> </fectionency> <groupID> mysql </groupId> <artifactid> </artifactid> </artifactid> <pectionency> <groupid> com.alibaba </groupid> <artifactid> druid </artifactid> <bersion> 1.0.29 </version> </fectionency> <groupidency> <groupid> org.spramework.boot </groupid> <artifactid> spring-boot-starter-jpa </atrifactid> mybatis 의존성. You can't use it without adding it --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!-- This is a dependency that automatically generates mappers, etc., must be added --> <dependency> <groupid> org.mybatis.generator </groupid> <artifactid> mybatis-generator </artifactis-generator </artifactid> <버전> 1.3.5 </version> <type> pom </type> </dectoremency> <!-이것은 자동으로 맵퍼 등을 생성하는 종속성입니다. https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core-> <prection> <groupid> org.mybatis.generator </groupid> <artifactid> mybatis-generator-core </artifactid> 1.3.5 </version> </dependement> <Plugin> <groupId> org.springframework.boot </groupid> <artifactid> Spring-Boot-Maven-Plugin </artifactid> </plugin> <groupid> org.mybatis.generator </groupid> <artifactid> mybatis-maven-plugin </artifactid> <configuration> <!-구성 파일의 주소-> <!-<configurationFile> src/main/resources/mybatis-generator/generatorconfig.xml </configurationFile>-> <verbose> true </verbose> <soverwrite> true> </concliguration> </plugins> </build>
2. Application.Properties 구성 파일에서 데이터베이스 및 myBatis 스캔 구성
spring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.url = jdbc : mysql : // localhost : 3306/yddy? useunicode = true & characterencodin g = utf-8 & servertimezone = utcspring.datasource.username = rootspring.datasource.password = 123456mybatis.config-locations = classpath : mybatis-config.xml# Mapper 파일 mybatis.mapper-locations = classpath : mapper/ *. xml #write * 직접 여기에 사용자 정의 SQL 및 xxxext.xml을 작성하는 데 유리합니다. 이 파일을 자동으로 스캔합니다. 구성 mybatis.type-aliases-package = com.dameiweb.learn.modellogging.level.com.dameiweb.learn.dao = debug#mybatis.config = mybatis 구성 파일 이름#mybatis.mapperlocations = mapper xml 파일 주소#mybatis. Path#mybatis.tybatis.typehandlerspackage = 유형 처리기 프로세서 패키지 PATH#MYBATIS.CHECK-CONFIG-LOATE = MYBATIS 확인 구성이 존재하는지 여부는 일반적으로 myBatis-config.xml#mybatis.executortype = execution Mode입니다. 기본값은 간단합니다
3. MyBatis 구성 및 자동 맵퍼 구성
리소스 디렉토리에서 새 GeneratorConfig.xml 및 MyBatis-config.xml을 만듭니다. 내용은 다음과 같습니다.
GeneratorConfig.xml 컨텐츠
<? xml version = "1.0"encoding = "utf-8"?> <! doctype generatorconfiguration public "-// mybatis.org//dtd mybatis generator configuration 1.0 // en" "http://mybatis.org/dtd/mybatis-conerater-config_1_0.dtd"> <classPathentry location = "c : /users/nick/.m2/repository/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar"/> <context id = "db2tables"targetRuntime = "MyBatis3"> value = "true"/> <property name = "suppressAllComments"value = "true"/> </commentGenerator> <!-데이터베이스 링크 주소 계정 비밀번호-> <jdbcConnection driver class = "com.mysql.jdbc.driver" ConnectionUrl = "jdbc : mysql : // localhost : 3306/yddy? useUnicode = true & charac </javatyperesolver> <!-모델 클래스 스토리지 위치 생성-> <javamodelgenerator targetpackage = "com.dameiweb.learn.model"targetproject = "src/main/java"> <property name = "enablesubpackages"value = "true"/> <valuest and that that that that that that the database the that the that the that the that the that the that that the that that the that that the that that the that the values the values the values a evatebackages. 이름 = "trimstrings"value = "false"/> </javamodelgenerator> <!-맵 파일 스토리지 위치 생성-> <sqlmapgenerator targetpackage = "mapper"targetproject = "src/main/resources"> <property name = "enablesubpackages"value = "true"/> </sqlmapgenerator> <! 사용하기 쉬운 코드 유형 = "AnnotatedMapper"를 생성하고 Java 모델 및 주석 기반 Mapper Object Type = "MixedMapper", 주석 기반 Java 모델 및 해당 Mapper 객체 유형 = "XMLMAPPER", SQLMAP XML 파일 및 독립 맵퍼 인터페이스 생성-> <JavaclientGenerator Type = "XmlMapper"를 생성합니다. TargetPackage = "com.dameiweb.learn.dao"targetProject = "src/main/java"> <property name = "enablebpackages"value = "true"/> </javaclientgenerator> </context> </generatorconfiguration>
mybatis-config.xml의 내용 :
<? xml version = "1.0"encoding = "utf-8"?> <! doctype configuration public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <setings> < "setsets> <" "callsetesternulls" value = "true"/> <setting name = "cacheenabled"value = "true"/> <setting name = "lazyloadingEnabled"value = "true"/<seting name = "tepressiveazyloading"value = "true"/<setting name = "multipleressetSenabled"value = "true"/> <seting name = "usecolumnlabel" "usecolumnlabel" "value"/>. value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="mapUnderscoreToCamelCase" value="true"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="NULL"/> </settings> <faintealias alias = "integer"type = "java.lang.integer" /> <findealias alias = "long"type = "java.lang.long.long" /> <infealias alias = "hashmap"type = "java.util.hashmap" /> <tindealias alias = "linkedhashmap"java.util.linkeashmap <faintealias alias = "arraylist"type = "java.util.arraylist" /> <faultealias alias = "linkedlist"type = "java.util.linkedlist" /> < /fableiases> < /configuration>
이런 식으로, 우리는 스프링 부팅, mybatis 및 mybatis를 구성하여 매퍼와 엔티티를 자동으로 생성했습니다. 이러한 방식으로 특정 테이블의 엔티티와 매퍼를 생성하려면 GeneratorConfig.xml의 JavaclientGenerator 태그 후에 만 다음 내용 만 추가하면됩니다.
여기에는 예제로 YD_Movies 테이블이 있습니다 (기본 데이터베이스 테이블 이름에서 복수 숫자를 사용하지 마십시오.이 테이블 이름은 이전에 내 뇌이어야하므로 복수 이름을 만들었습니다).
<!-해당 테이블 및 클래스 이름을 생성-> <table tableName = "yd_movies"domainObjectName = "movie"enableCountByexample = "false"enableUpdateByexample = "false"enabledeLeteByexample = "false"enableSelectByexample = "selectByexamplequeryId ="false "> <coverride" "coverride" javatype = "java.lang.string"jdbctype = "varchar" /> <columnoverride column = "cover_photos_loc"javatype = "java.lang.string"jdbctype = "varchar" /> <columnoverRide Column = "PubDates"javaType = "jdbc.lang.lang. /> <ColumnOverRide Column = "Photogrys_origin"javatype = "java.lang.string"jdbctype = "varchar" /> <columnoverride column = "photogrys_origin_loc"javatype = "java.lang.string"jdbctype = "varchride embolb javatype = "java.lang.string"jdbctype = "varchar" /> <columnoverride column = "Awards"javatype = "java.lang.string"jdbctype = "varchar" /> <columnoverride column = "javatype ="java.lang.string "jdbctype"java.lang.string " </table> <!-Columnoverride는이 태그를 사용하여 데이터베이스 필드 유형이 텍스트 일 때 mybatis가 xxxxwithblobs 파일을 생성하지 못하게합니다. ->
그런 다음 아이디어의 오른쪽에있는 Maven 프로젝트를 클릭하면 Mybatis-Generate를 볼 수 있습니다 : mybatis-generate 아래에서 생성하고 Mybatis-Generate : Generate를 두 번 클릭하십시오.
** Generator Note, 버그라고도 할 수 있습니다.
그것이 생성 될 때, 그리고 2 세대에서는 DAO와 엔티티가 직접 덮어 쓰고, mapper.xml은 직접 추가되어 실행 중 오류가 발생하고 찾기가 어렵습니다. **
4. Mybatis 사용자 정의 SQL
SQL을 사용자 정의 해야하는 경우 Mapper 파일에도 넣을 수 없습니다. 그렇지 않으면 데이터베이스 테이블의 필드가 업데이트되어 재생되어야 할 때 맞춤형 SQL을 덮어 쓰나요? 따라서 moviemapper.xml 디렉토리에 새로운 moviemapperext.xml 파일을 작성하고 사용자 정의 SQL을 여기에 넣어야합니다. 예제는 다음과 같습니다.
moviemapperext.xml 파일 컨텐츠입니다
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype mapper public "-// mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper namper nomepor" > <select id = "selectByCondition"resultmap = "baseresultmap"parametertype = "com.dmeiweb.learn.dto.movierequest"> yd_movies에서 yd_r_movie_countries를 남겼습니다. YD_COUNTRIES COU ON YD_R_MOVIE_COUNTRIES.COUNTRY_ID = COU.ID left yd_movies.id = yd_r_movie_category.movie_id yd_category cat에서 yd_category cat.cator yd_movies.id = yd_r_movie_actor on yd_r_movie_actor.movie_id left yd_actors a yd_r_movie_actor.actor_id = a.id where yd_movies.status = 1 < "movierequest.title! = null"> and yd_movies. "%" #{movieRequest.title} "%"</if> <if test = "movieRequest.country! = null"> and cou.id = #{movieRequest.country} </if> <test = "movieRequest.category! = null"> {movierequest. test = "movieRequest.year! = null"> 및 Year = #{moviEerQuest.year} </if> <if test = "movieRequest.rate! = null"> and rate> = #{movieRequest.rate} </if> < "movieRequest.rate! = null"( #{ #{ #{movieRequest.rate). </if> <test = "movieRequest.SubType! = null"> 및 yd_movies.SubType = #{moviERequest.SubType} </if> yd_movies.id updated_at desc, 연도 </select> </mapper>요약
위는 편집자가 소개 한 스프링 부츠입니다. mybatis를 통합하고 매핑 자 및 엔티티를 자동으로 생성합니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!