mybatis

mybatis xml設定ファイル使わない場合の補足

mybatis xml設定ファイル使わない場合の方法として まとめたが、、 mybatis XML設定を使わない場合 - Oboe吹きプログラマの黙示録接続設定をXMLに記述しないとしても、 やはり複雑なSQLをアノテーションに記述しては読みにくいので、 SQL文は、SQL Map…

mybatis snake case to camel case

mybatis テーブル列名が、snake case の場合、Java Object の属性名 camel case に マッピングさせる場合、configuration XMLファイルに記述する設定は、、、 mapUnderscoreToCamelCase を True で設定する。 <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> デフォルトは、False である。 これは、ty…

mybatis XML設定を使わない場合

mybatis のスタートガイド https://mybatis.org/mybatis-3/ja/getting-started.html に書いてあるのは、どういうDatasource を用意すれば良いのか明記されてなくて ちょっと不親切と思っていた。 org.apache.ibatis.datasource.unpooled.UnpooledDataSource …

配列型に対するmybatis の TypeHandler よく使いそうなものを作った

先日書いた int[] → ArrayTypeHandler - Oboe吹きプログラマの黙示録 に刺激されて、String[ ] , LocalDate[ ] , LocalDateTime[ ] , double[ ] とのマッピング もあるべきと思い、 GitHub - yipuran/yipuran-mybatis: mybatis used application の方で公開…

int[] → ArrayTypeHandler

SQLクエリの結果から、int [ ]で受け取るための mybatis ArrayTypeHandler先日、PostgreSQL 再帰クエリの結果から、INTEGER型 配列を Integer[] で取得するものを 書きました。 oboe2uran.hatenablog.comInteger [ ] ではなくて、やはり、int [ ] で取得した…

PostgreSQL の再帰SQL→Array → mybatis で取得

先日の例、 PostgreSQL の再帰SQL で要素の連結結果を求める。 - Oboe吹きプログラマの黙示録 テーブル名:division id parent_id name 1 null A 2 1 B 3 2 C 4 2 D ここから、連結文字列の結果、id と name "1" "1,2" "1,2,3" "1,2,4""A" "A,B" "A,B,C" "A,…

mybatis logbackが出なくなった場合の対処

mybatis 、logback を使っていて、logback のバージョン上げたのか何かのきっかけ、 依存関係かなにか?指定しているアペンダ悪い?で mybatis のデバッグレベルのログが出なくなってしまった。 実行するSQL文が見れてデバッグに便利だったlogaback.xml …

mybatis foreach の index を使う

MyBatis の foreach の index を使えば、Multiple INSERT を実行するとき foreach のカウンタを挿入する行の 列の値にすることができる。 <insert id="insertEmployee" parameterType="map"> INSERT INTO employees ( employee_name , employee_no ) VALUES <foreach collection="e_list" item="e" separator="," index="index"> ( #{e.dummy}, #{index} ) </foreach></insert>

SQLアノテーションで動的SQL

mybatis のSQLアノテーションで動的SQLを書くには、SQLMap XMLで書いていた <if> 等を <script> で囲んで書く。 (例) @Select("<script>SELECT * FROM shops WHERE delete_flg = 0 " + "<if test=\"branch_id != null\"> AND branch_id = #{branch_id}</if>" + " </script></if>…

mybatis JSR310 の LocalDate など

Java7→Java8 移行で、mybatis を使うプロジェクトで注意しなければならないのは、 java.util.Date の代わりに java.time.LocalDate / LocalDateTime に置き換わった時です。 mybatis でタイプハンドラを指定やらないとなりません。MITライセンスで、このハ…

zeroDateTimeBehavior

MySQL をJavaで使用してTIMESTAMP や DATETIME をJavaのオブジェクトに変換する時、データに0が入ってたりすると、 Value '0000-00-00' can not be represented as java.sql.Timestamp JDBC SQLException を発生してしまう。Java用のMySQLコネクタ…

mybatis 動的SQLの if  test 文の中、

MyBatis 動的SQL の <if> を書く場合によく使うのが、null か null でないかであろう。 <if test="billno != null"> </if> test文を不等号で書くときは、、、 < → &lt; > → &gt; 論理和の演算子は、Java と同じ ’ || ’ が書けるが、 論理積の演算子は、’&& ’ で書くことはできない! 論理積の演</if>…

MySQL BLOB を mybatis で使う時に出たエラー

mybatis で MySQL の BLOB型データを読み書きしようとしたら、 Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right…

mybatis ログレベルによる出力分け

mybatis を sl4j (logback) を使用したプロジェクトで使用する時、 logback.xml に org.apache.ibatis パッケージ に対するログレベルを書かなくても、呼び出し側で DEBUG になっていると、、 org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug が DEBUG…

mybatis で、MULTIPLE INSERT を書く

MyBatisで、MUTIPLE INSERT を実行するのは、foreach を使います。 例) //テーブルのデータ定義クラス→Item public class Item implements Serializable{ public String item; public int price; public Item(){ } } // mybatis の SQLセッション、…