MyBatis+PostgreSQLプラットフォームをゼロから構築します
最近、プロジェクトのデータベースはPostgreSQLを使用して、元のMyBatisを使用してデータを操作します。元のMyBatisには何の問題もありません。ただし、中国にはMybatisツールがあり、多くの実用的なことを行うのに役立ちます。ほとんどの場合、元のMyBatisで処理する必要があります。基本的に十分に実装されています。この記事では、PostgreSQLのインストール、TK.MyBatisの構成、およびこのプロセスで遭遇する可能性のあるいくつかの小さな問題の詳細な手順を共有します。
PostgreSQLをインストールし、次のコマンドを実行してインストールします。コードを次のようにコピーします。
サーバーがインストールされた後、グラフィカルインターフェイスを備えたクライアントPDADMINも必要です。 PostgreSQLのWindowsバージョンをインストールすると、このアドレスで対応するバージョンを見つけることができます。インストールが成功した後、システムユーザーとデータベースユーザーがデフォルトで作成されます。名前とパスワードはすべてpostgresです。新しいユーザーを作成するか、このアカウントを直接使用できます。とにかく、私はただのテストです。インストールが完了したら、リモートアクセスの問題に遭遇する可能性があります。
リモート接続の問題、ローカル接続のみがデフォルトで許可されます。他のクライアントが接続できるようにするには、構成ファイルを変更できます。このファイルのディレクトリは、/etc/postgresql/9.5/mainにあります。このディレクトリには2つのファイルがあります。
1:postgresql.conf、これはサーバー関連であり、listen_addressアドレスがあり、デフォルトでのみローカルに耳を傾け、変更できます。
2:PG_HBA.COFこれはユーザー許可に関連しており、接続関連の構成があり、ゲートウェイモードで構成できます
接続が成功した後、おそらくこのようなもので、データベース、テーブル、その他のオブジェクトを作成できます。
MyBatisコードジェネレーター、データベースとモデルのマッピング、このような機械的作業は、完了するためにマシンに任せる必要があります。こちらの詳細を参照してください。
単一のテーブルCRUD操作であるGeneral Mapperは、パブリックインターフェイスを抽象化でき、Tk.Mybatisが提供する一般的なマッパーは、このタイプの問題を解決するのに役立ちます。
---- mapper.xml、十分に小さい(フィールドマップのみを含む)
<mapper namespace = "com.jim.logstashmvc.dao.generated.mapper.productmapper"> <resultmap id = "baseeresultmap" type = "com.jim.logstashmvc.dao.generated.entity.product"> < jdbctype = "bigint" property = "id" /> <result column = "name" jdbctype = "varchar" property = "name" /> < /resultmap> < /mapper>
----マッパー、十分に簡単です(マッパーインターフェイスから継承するだけです)
コードコピーは次のとおりです。パブリックインターフェイスProductMapperはMapper <Product> {}を拡張します
プラグインは、ページングプラグイン、SQLパフォーマンス分析プラグインなどです。MyBatisと統合するのは非常に簡単です。
春と統合する方法は?
ジェネレーターの統合では、Mavenメソッドを使用してコードジェネレーターを実行できます。
パッケージに依存します
<! - mybatis-> <dependency> groupid> org.mybatis </groupid> <artifactid> mybatis </artifactid> <bersion> $ {mybatis.version} </version> </depency> <! - spring Integration-> <sepling> <seplincid> <shipifidppring </groupid <バージョン> $ {mybatis.spring.version} </version> </dependency> <! - mbg - > <依存関係> <groupid> org.mybatis.generator </groupid> <artifactid> mybatis-generator-core </artifactid> <バージョン> $ {mbg. </scop> </scop <オプション> true </optional> </dependency> <! - pagination-> <dependency> groupid> com.github.pagehelper </groupid> <artifactid> pagehelper </artifactid> <バージョン> $ {pagehelper.version} </version> </dependency> <artifactid> mapper </artifactid> <bersion> $ {mapper.version} </version> </dependency> <! - tkmybatisはJPAアノテーションを使用します - > <依存> <groupId> javax.persistence </groupid> <artifactid> persipence-api < <GroupId> org.postgresql </groupid> <artifactid> postgresql </artifactid> <bersion> 9.3-1102-jdbc41 </version> </dependency>構成ジェネレータープラグイン、構成ファイルパス、構成依存関係を指定します。1つはデータベースドライバーであり、もう1つは一般的なマッパーです
<! - mbg - > <プラグイン> <groupid> org.mybatis.generator </groupid> <artifactid> mybatis-generator-maven-plugin </artifactid> <version> $ {mbg.version} </version> <configuration> <configurationfile> $ {beadyir} /src/main/resources/generator/generatorconfig.xml </configurationfile> <overwrite> true </overwrite> <verbose> true </verbose> </configuration> <dephenties> <shentince> <artifactid> postgreSql </artifactid> <バージョン> 9.3-1102-JDBC41 </version> </dependency> <dependency> <groupid> tk.mybatis </groupid> <artifactid> mapper </artifactid> <バージョン> $ {mapper.version}ジェネレーター構成ファイル
**データベース接続を構成します
**生成されたモデル、mapper、mapper.xmlのストレージパスを構成する
**生成するテーブル情報を構成します
MyBatis3SimpleであるTargetRuntimeに注意してください。デフォルトオプションはMyBatis3です。一般的なマッパーを使用する場合、春にインターフェイスをスキャンするときにこれを書くことができます。
コードを次のようにコピーします。<bean> <プロパティ名= "sqlsessionfactorybeanname" value = "jimsqlsessionfactory"/> <プロパティ名= "basepackage" value = "com.jim.logstashmvc.dao.generated.mapper"/> </bean>
MyBatis3の場合、生成されたmapper.xml形式ははるかに複雑になります。私は以前にこの問題に遭遇しました:mybatis3によって生成されたmapper.xmlを使用して、次の一般的なマッパーモードにmapperscannerconfigurerを誤って構成します。その理由は、構成の問題であると判断できます(mapper.xmlの重複IDではありません)。後で非ジェネリックマッパーの構成を研究します。
コードを次のようにコピーします:java.lang.illegalargumentexception:マッピングされたステートメントコレクションには既にcom.jim.logstashmvc.dao.generated.mapper.productmapper.selectbyexampleat org.apache.ibatis.session.configuration $ strictmamap.java( org.apache.ibatis.session.configuration $ strictmap.put(configuration.java:809)
発電機の構成は次のとおりです。
コードを次のようにコピーします。<GeneratorConfiguration> <プロパティリソース= "config.properties"/> <context targetruntime = "mybatis3simple" defaultmodeltype = "flat"> <プロパティ名= "beginningdelimiter" bulingddelimiter "bulingddelimiter name = "mappers" value = "$ {mapper.mapper}"/> </plugin> <jdbcconnection driverclass = "$ {jdbc.driverclass}" connectionurl = "$ {jdbc.url}" userid = "$ {jdbc.username}" </jdbcconnection> <javamodelgenerator targetPackage = "$ {targetModelPackage}"ターゲットポリジェント= "$ {ターゲットジャヴァプロジェント}"/> <sqlmapgenerator targetpackage = "mapper"ターゲットポロジェント= "$ {ターゲットリソースプロジェント} TargetPackage = "$ {targetMapperPackage}" stargentProject = "$ {targetjavaproject}" type = "xmlmapper"> </javaclientgenerator> <table tablename = "product" domainobjectname = "product"> </table> </context>
MyBatis統合は、主に接続プール情報、プラグイン、マッパースキャン、その他の情報を構成します。
<bean id = "jimdatasource"> <プロパティ名= "driverclassname" value = "$ {jdbc.driverclass}"/> <プロパティname = "url" value = "$ {jdbc.url}"/> <プロパティ名= "username" value = "$ {jdbc.username}"/> < value = "$ {jdbc.password}"/> <プロパティ名= "hiventsize" value = "5"/> <プロパティ名= "minidle" value = "10"/> <プロパティ名= "maxwait" value = "60000"/> <プロパティ名= " value = "3600000"/> <プロパティ名= "validationquery" value = "select 1"/> <プロパティ名= "testhiledle" value = "true"/> <プロパティ名= "testonborrow" value = "false"/> <プロパティ名= "testonborrow" value = "fals"/> <プロパティ名= "fals"/</bean <プロパティ名= "dataSource" ref = "jimdatasource"/> <プロパティ名= "mapperlocations" value = "classpath:mapper/*。xml"/> <プロパティ名= "ypealiasespage" value = "com.jim.logstashmvc.dao.generated.entity" name = "Properties"> <value> dialect = postgresql reasure = true supportmethodsarguments = true returnpageInfo = check params = countsql </value> </property> </bean> </array> </property> </bean> <bean> <propertial name = "sqlsessionsfactorybeanname" value "/> name = "basepackage" value = "com.jim.logstashmvc.dao.generated.mapper"/> </bean>一般的なマッパーの使用:
•Mapper、すべての生成されたマッパーはMapper <T>から継承され、共通のCRUD操作を含むデフォルトでは、一般的なマッパーのすべてのインターフェイスを保持します。
•Iservice、一般的なマッパーインターフェイスの定義、私たち自身のビジネスに従ってこのインターフェイスを変更できます
@ServicePublic Interface iService <T> {t SelectByKey(Object Key); int save(t entity); int delete(object key); int updateall(t entity); int updatenotnull(t entity);リスト<t> selectbyexample(object example); // todo others ...}BaseService、一般的なマッパーの実装クラス
パブリックアブストラクトクラスのベースセルサービス<t>は、iservice <t> {@autowired Protected mapper <t> mapperを実装しています。 public mapper <t> getMapper(){return mapper; } @Override public t selectbykey(object key){return mapper.selectbyprimarykey(key); } public int save(t entity){return mapper.insert(entity); } public int delete(object key){return mapper.deletebyprimarykey(key); } public int updateall(t entity){return mapper.updatebyprimarykey(entity); } public int updatenotnull(t entity){return mapper.updatebyprimarykeyselective(entity); } public list <t> selectbyexample(object example){return mapper.selectbyexample(example); } // todo others ...}特定のサービスカテゴリ
@servicepublic class productserviceimpl extends baseService <product> emplmention productervice {@override public list <product> selectbyProduct(Product Product、int Page、int rows){例= new Example(Product.Class); example.criteria Criteria = example.createCriteria(); if(!stringutils.isblank(product.getname())){criteria.andequalto( "name"、croduct.getname()); } if(product.getid()!= null){criteria.andequalto( "id"、crodcid.getid()); } pagehelper.startpage(page、rows); return selectbyexample(example); }}PostgreSQLをインストールし、リモートで接続し、MBGを統合してマッパーとモデルを生成し、MyBatisをスプリングと統合し、最終的に一般的なマッパーを介して接続して目標を達成します。しかし、General Mapperにはその利点と短所があり、プロジェクト環境に従ってバランスを取る必要があります。私は個人的に、利点が不利な点を上回ると感じています。
この記事で引用:
1。http://www.mybatis.tk/
2。https://github.com/abel533/mybatis-spring
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。