私は最近Javaを学んでいますが、MyBatisはJava Recruitmentで非常に頻繁に登場することがわかりました。これは、Java開発でより頻繁に使用されるデータベースORMフレームワークである可能性があります。それで、私はSpring BootとMyBatisの統合を研究するつもりでした。
1. pom.xmlファイルに次の構成を追加します
<Dependencies> <Dependency> <groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </artifactid> </dependency> <dependency> <groupid> org.springframework.boot </groupid> <artifactid> </scope> </scope> </scortid> </dependency> <dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-jdbc </artifactid> </dependency> <依存関係> <groupid> mysql </groupid> <artifactid> mysql-depentid </artifactid> </runtid> <Dependency> groupId> com.alibaba </groupid> <artifactid> druid </artifactid> <version> 1.0.29 </version> </dependency> <dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-startertartertartertartartartartartartartartartartartartartertartartertartertertartertertertertertertertertertertertar mybatis依存関係。追加せずに使用することはできません - > <依存関係> groupid> org.mybatis.spring.boot </groupid> <artifactid> mybatis-spring-boot-starter </artifactid> <バージョン> 1.3.2 </version> </dependency> <!-これは自動化された依存関係です。 <groupid> org.mybatis.generator </groupid> <artifactid> mybatis-generator </artifactid> <バージョン> 1.3.5 </version> <type> pom </type> </depence> <! - これはマッパーなどを自動的に生成する依存関係です。 https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core-> <seplency> <groupid> org.mybatis.generator </groupid> <artifactid> mybatis-generator-core </artifactid> </>> 5.5is <プラグイン> <プラグイン><groupId> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> <plugin> <groupid> org.mybatis.generator </groupid> <artifactid> mybatis-generator-maven-plugin </artifacin <バージョン> 1.3.2 </version> <configuration> <! - 構成ファイルのアドレス - > <! - <configurationfile> src/resources/mybatis-generator/generatorconfig.xml </configurationfile> - > <verbose> true </verbose> <overwrite> true </bublition
2。アプリケーションでデータベースとmybatisスキャンを構成します。プロパティ構成ファイル
spring.datasource.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.url = jdbc:mysql:// localhost:3306/yddy?useunicode = true&charatereCodin 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-aliase-package = com.dameiweb.learn.modellogging.level.com.dameiweb.learn.dao = debug#mybatis.config = mybatis構成ファイル名#mybatis.mibatis.mapperlocations = mapper xml xml classespis。パス#mybatis.typehandlerspackage =タイプハンドラープロセッサパッケージパスパス#mybatis.check-config-location = mybatisを確認すると、通常はmybatis-config.xml#mybatis.executortype =実行モードです。デフォルトは簡単です
3。MyBatis構成と自動マッパー構成
リソースディレクトリに新しいgeneratorconfig.xmlとmybatis-config.xmlを作成します。コンテンツは次のとおりです。
GeneratorConfig.xmlコンテンツ
<?xml version = "1.0" encoding = "utf-8"?> <!doctype generatorconfiguration public " - // mybatis.org//dtd mybatisジェネレーター構成1.0 // en" "http://mybatis.org/dtd/mybatis-generator-generator-config_1_0 <classpathentry location = "c:/users/nick/.m2/repository/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar"/> <context id = "db2tables" db2tables "ターゲット=" mybatis3 "eppetsirator>" value = "true"/> <プロパティ名= "suppressallcomments" value = "true"/> </commentgenerator> <! - データベースリンクアドレスアカウントパスワード - > <jdbcconnection driverclass = "com.mysql.jdbc.driver" Connectionurl = "JDBC:mysql:// localhost:3306/yddy?useunicode = true&charatereCoding = utf-8&servertimezone = utc" userid = "root" password = "123456"> </jdbcconection> <javatypereSolver> <javatypereSolver> </javatyperesolver> <! - モデルクラスストレージの場所を生成 - > <javamodelgenerator targetpackage = "com.dameiweb.learn.model" stargeproject = "src/main/java"> <プロパティ名= "有効=" enabassubpackages "value =" true "/> < name = "trimstrings" value = "false"/> </javamodelgenerator> <! - 生成マップファイルストレージ場所 - > <sqlmapgenerator targetpackage = "mapper" targetproject = "src/main/resources"> <プロパティname = "enabassubpackages" value = "" true "/> </sqlmapgenerator> <コード、使いやすいコードタイプ= "AnnotatedMapper"、Javaモデルとアノテーションベースのマッパーオブジェクトタイプ= "MixedMapper"、AnnotationベースのJavaモデルと対応するマッパーオブジェクトタイプ= "XMLMapper"、SQLMAP XMLファイルと独立したマッパーインターフェイスの生成 - > <Javaclientgenerator Type = "XMLmeper" TargetPackage = "com.dameiweb.learn.dao" stargentProject = "src/main/java"> <プロパティname = "enableSubpackages" value = "true"/> </javaclientgenerator> </context> </generatorconfiguration>
mybatis-config.xmlの内容:
<?xml version = "1.0" encoding = "utf-8"?> <!doctype構成public " - // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" name = "cacheenabled" value = "true"/> <setting name = "lazyloadingEnabled" value = "true"/> <setting name = "aggressivelazyloading" value = "true"/> <setting name "/> <setting name =" bulation "value"/> <setting name = "" usecolumnlabel "/"/< name = "automaptingbehavior" value = "partial"/> <setting name = "defaultexecutortype" value = "simple"/> <setting name = "mapunderscoretocamelcase" value = "true"/> <setting name = "localcachescope" value = "session"/> <setting nam Alias = "integer" type = "java.lang.integer" /> <typealias alias = "long" type = "java.lang.long.long" /> <typealias alias = "hashmap" type = "java.util.hashmap" /> <typealias alias = "linkedhashmap" pimedhmap "pimedhap" pimedhap "pipeedhap. <typealias alias = "arrayList" type = "java.util.arraylist" /> <typealias alias = "linkedlist" type = "java.util.linkedlist" /> < /ypealiase> < /configuration>
このようにして、スプリングブート、MyBatis、MyBatisを構成して、マッパーとエンティティを自動的に生成しました。このようにして、特定のテーブルのエンティティとマッパーを生成したい場合は、GeneratorConfig.xmlのJavaclientGeneratorタグの後に次のコンテンツを追加する必要があります。
ここに例としてYD_Moviesテーブルがあります(メインデータベースのテーブル名で複数の数字を使用しないでください。このテーブル名は以前に私の脳でなければならないので、複数の名前を作成しました)
<! - 対応するテーブルとクラス名を生成 - > <table tablename = "yd_movies" domainobjectname = "viom" enablecountbyexample = "false" enabableupdatebyexample = "false" enableChyexample = "false" enablesectbyexample = "false" false "false" fals "fals javatype = "java.lang.string" jdbctype = "varchar" /> <colarnoverride column = "cover_photos_loc" javatype = "java.lang.string" jdbctype = "varchar" /> <colornoverride column = "pubdates" javatype = "javatype /> <Colornoverride column = "写真" javatype = "java.lang.string" jdbctype = "varchar" /> <colornoverride column = "photogrows_origin_loc" javatype = "java.lang.string" jdbctype = "varchar" /> <colummerride columm javatype = "java.lang.string" jdbctype = "varchar" /> <colornoverride column = "awards" javatype = "java.lang.string" jdbctype = "varchar" />> <columnoverride column = "summary" javatype = "java.lang.string" />> </table> <! - ColornoverRideは、このタグを使用して、データベースのフィールドタイプがテキストであるときにMyBatisがxxxxwithblobsファイルを生成するのを防ぎます。 - >
次に、アイデアの右側にあるmavenプロジェクトをクリックすると、mybatis-generate:mybatis-generateの生成を確認できます。
**ジェネレーターに注意してください、それはバグとも言えます
それが生成されたときであり、第2世代では、DAOとエンティティが直接上書きされますが、mapper.xmlは直接追加され、実行中のエラーが発生し、見つけることが困難です。 **
4.MyBatisカスタムSQL
SQLをカスタマイズする必要がある場合、これらをマッパーファイルにも入れることはできません。それ以外の場合、データベーステーブルのフィールドが更新され、再生する必要がある場合、カスタマイズされたSQLは上書きされますか?したがって、moviemapper.xmlのディレクトリに新しいmoviemapperext.xmlファイルを作成し、カスタムSQLをここに配置する必要があります。例は次のとおりです。
moviemapperext.xmlファイルコンテンツ
<?xml version = "1.0" encoding = "utf-8"?> <!doctype mapper public " - // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" namespace = "com.dmeiweb.learn.dao.moviemapper"> <select id = "selectbycondition" resultmap = "parametertype =" com.dmeib.learn.dto.movierequest "> select yd_movies。 yd_movies.id = yd_r_movie_countries.movie_id LEFT JOIN yd_countries cou ON yd_r_movie_countries.country_id = cou.id LEFT JOIN yd_r_movie_category ON yd_movies.id = yd_r_movie_category.movie_id LEFT JOIN yd_category cat ON yd_r_movie_category.category_id = cat.id left join yd_r_movie_actor on yd_movies.id = yd_r_movie_actor.movie_id left yd_actors A on yd_r_movie_actor.actor_id = a.id != null "> and yd_movies.title like"% " #{movierequest.category} </if> <if> if test = "movierequest.year!= null"> and year =#{movieRequest.year} </if> <if> "movierequest.rate!= null"> and rate> = =#=#{moviERequest.rate} <(#{movierequest.rate} +1)</if> <if> <if test = "movierequest.subtype!= null"> and yd_movies.subtype =#{movierequest.subtype} </if> group by yd_movies.id要約します
上記は、編集者が紹介したスプリングブーツです。 MyBatisを統合し、マッパーとエンティティを自動的に生成します。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!