読者です 読者をやめる 読者になる 読者になる

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セッション、…