Java(.NET)のO/Rマッピングライブラリ。最近、Ruby用も登場。(RBatis)
SQL(引数、戻り値、マッピング設定など)をXMLに定義することが特長。
本家(2010/06/16まで)
本家(2010/06/16以降)
サンプルは以下のページ参照。
6年間Apacheプロジェクトで開発されていが、2010/06/16にApacheプロジェクトからGoogle Codeに移動した。 それに併せて(?)、名前もmybatisに変更。
事象 Tomcatに他のシステムで動いていたWARをデプロイしたら、以下の様なエラーが発生した。 Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for hoge.dao.hogeDaoMapper.Select at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:1031) at org.apache.ibatis.session.Configu…
去年、以下を書いたけれど、、 XMLMapperBuilder を使ってみる。 - Oboe吹きプログラマの黙示録 Java インターフェースクラスで書く Mapper の指定になってしまっている。 クラスローダーが読み込める全ての classpath から、XMLを見つけて parse する方法として書いてみる。 import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import ja…
こんにちは。 エキサイト株式会社の三浦です。 DBでは、可用性の担保のために Primary と Replication のインスタンスをそれぞれ用意することが多々あります。 こうしたDBをSpring Bootで扱う際、適切にSQL実行先を振り分けないとせっかく分けた意味がなくなってしまいます。 今回は、適切に Primary / Replication インスタンスにSQLを振り分ける方法を2通り紹介します。 DBの可用性と Primary / Replication インスタンス DBは、多くのアプリケーションにとって、アプリケーション上で扱うデータが入っている重要なサービスであり、DB…
過去、、いろいろ試行錯誤を書いていた。。 mybatis XML設定を使わない場合 - Oboe吹きプログラマの黙示録mybatis xml設定ファイル使わない場合の補足 - Oboe吹きプログラマの黙示録【再興】mybatis XML設定を使わない場合 - Oboe吹きプログラマの黙示録mybatis config のXMLを書かない - Oboe吹きプログラマの黙示録XMLMapperBuilder を使ってみる。 - Oboe吹きプログラマの黙示録改めて、config XMLを記述しない、spring - mybatis に依存しない、 SQL Map XML を書かなかったり、書いた場…
mybatis の一般的なSQL Mapper の指定は、Mapper インターフェースクラスのパッケージと 同じ階層に、SQLMap XML を配置するか、Configuration のXMLで、 <mappers> <mapper resource="sql/sqlmap.xml"/> </mappers> で書くであろう。 Configuration のXMLを書かずに、さらに、SQLMap XML の PATH をMapper インターフェースクラス のパッケージと一致させない、XMLファイル名もインターフェースクラス名と全く異なる。 というスタンダードではない設計の時、どうするか? …
1年以上前、mybatis config 設定 = 接続情報等のXMLを使わないケースで 以下を書いた。 【再興】mybatis XML設定を使わない場合 - Oboe吹きプログラマの黙示録1つの Mapper に限らず、複数 Mapper を使用することもあるのだから、以下が良い。 public static SqlSession getSqlSession(Class<?>... mapperClasses){ UnpooledDataSource dataSource = GenericBuilder.of(UnpooledDataSource::new) .with(UnpooledD…
こんばんは、エキサイト株式会社の中尾です。 前回の続きです。 mybatisを入れていきます。 mybatisにはserviceと同様@Singletonをつけて、@Injectで呼び出します。 その際、repositoryを間に挟みます。 まず、必要なextentionをgradleに追加します。 implementation 'io.quarkiverse.mybatis:quarkus-mybatis:0.0.10' implementation 'io.quarkus:quarkus-jdbc-mysql:0.26.1' 続いてデータベースの設定です。 CREATE schema te…
既に生成済の SqlSession に対して後から SQL mapper を追加する方法 (設計として悪いので勧められない)セッションが持っている マッパーレジストリにマッパークラスを追加する。 import org.apache.ibatis.binding.MapperRegistry; import org.apache.ibatis.session.SqlSession; 以下のようなメソッドを用意して呼べば良い。 public void addMapper(SqlSession session, Class<?> mapperClass) { MapperRegistry regis…
設定コンフィグXML がある前提で、、 org.apache.ibatis.io.Resources を使用して、 import java.io.IOException; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactoryBuilder; SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() .b…
本日のお題 本日のお題は「レコードの保存機能の実装」です。 以前にフォームのバインド機能を実装してからというもの、バリデーション(こちらとこちら)やテンプレートなど脇道に逸れた話が多くなっていました。 今回は、ようやく元に戻ってレコード保存機能を実装していきます。 というと、「丸々ひとつの記事を使ってまとめるほどのことか?」と疑問を持たれる方も多くいらっしゃると思います。 確かに、RailsやLaravelなどの言語であればわずか数行で書けてしまうこの工程、さほど手間のかかるものとは思えません。 しかし、Spring Bootではやることが思いの外多かったので、こうして記事として取り上げること…
MySQL バージョン 5.7.8 以降で使える JSON型に対する mybatis のハンドラ実装のサンプルです。 JSON型のデータが、単純な key-value だけでなくネストしたオブジェクトが入ったJSONでも、 Java のクラスのネストと対応できることを示すためのサンプルです。https://github.com/yipuran/yipuran-mybatis を使います。この yipuran-mybatis のバージョン4.7 以降から、 jackson-databind バージョン 2.12.4 以上を指定した依存関係を持つようになっており Jackson の JSON変換を…
新人育成用に自分が知っている知識を棚卸するための記事です。なお、解釈が誤っている可能性は十分にあります。 キーワード ポートアンドアダプター ヘキサゴナルアーキテクチャ ミュータブル/イミュータブル 腐敗防止層 ポートアンドアダプター(ヘキサゴナルアーキテクチャ)とは 私がアーキテクチャで意識しているのは、次の点です。 アプリケーションの「内側」と「外側」の区別をつける 「外側」の知識を「内側」に侵入させない 「内側」の知識を「外側」に流出させない アプリケーションの「内側」と「外側」の区別をつける 私は「内側」「外側」を次の定義で表現しています。 内側 アプリケーションのビジネスロジック 外…
1. 本記事で利用した技術のVersion openjdk 11.0.9 mybatis-spring-boot-starter 2.2.0 PostgreSQL 13.1 2. MyBatis Spring Boot Starter GitHub github.com 3. 公式 MyBatis document MyBatis https://mybatis.org/mybatis-3/ja/index.html MyBatis-Spring https://mybatis.org/spring/ja/index.html MyBatis Spring-boot-starter http:…