iBatisはMyBatisと名前が変わり、ApacheからGoogle Codeへ移ってる。
# なんでだろう??知っている人いますか??
MyBatisは3.0.1がリリースされているけど、2010/06/01現在Springからは連携するパッケージが出ていないため、SpringとMyBatisのくみあわせはできない。
旧iBatisと連携することにして、それならSpringリファレンスにあるとおりの手順でできる。
で、iBatisを使うときに、ibatorという自動生成ツールを使うと便利だ。
eclipseのプラグインがあり、update siteは以下。なお、スタンドアロンでJARから利用できる。
http://ibatis.apache.org/tools/ibator
MyBatisでもMyBatis Generatorとして開発中のようだ。
要はiBatisの設定ファイルとエンティティクラス、さらにDAOのインタフェースと実装クラスを生成するライブラリで、
自動生成設定ファイルを記述する。
eclipseのFile -> New -> Apache iBATIS Ibator Configuration Fileとすると雛形ができる。
この設定ファイルを右クリックしてGenerate iBATIS Artifactsを選択すると、自動生成される。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ibatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN" "http://ibatis.apache.org/dtd/ibator-config_1_0.dtd" > <ibatorConfiguration> <classPathEntry location="JDBCドライバのJARへのパス" /> <ibatorContext id="mycatalog" targetRuntime="Ibatis2Java5" defaultModelType="flat"> <ibatorPlugin type="org.apache.ibatis.ibator.plugins.SerializablePlugin" /> <ibatorPlugin type="org.apache.ibatis.ibator.plugins.EqualsHashCodePlugin" /> <ibatorPlugin type="org.apache.ibatis.ibator.plugins.SqlMapConfigPlugin"> <property name="targetPackage" value="xxx" /> <property name="targetProject" value="xxx" /> </ibatorPlugin> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/xxx" userId="xxx" password="xxx"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="true" /> </javaTypeResolver> <javaModelGenerator targetPackage="xxx" targetProject="xxx"> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="xxx" targetProject="xxx" /> <daoGenerator targetPackage="xxx" targetProject="xxx" type="SPRING" implementationPackage="xxx"> <property name="methodNameCalculator" value="default" /> </daoGenerator> <table schema="xxx" tableName="xxx" domainObjectName="xxx" enableDeleteByExample="false" enableCountByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" enableSelectByExample="false"> <generatedKey column="id" sqlStatement="MySQL" identity="true" /> <ignoreColumn column="updateTimestamp" /> </table> </ibatorContext> </ibatorConfiguration>
targetRuntime属性を設定しなければ、JDK 1.5以前のソースが生成される。Genericsを使うソースを生成したいときはtargetRuntime="Ibatis2Java5"を指定する。
SerializablePluginとEqualsHashCodePluginを指定すると、エンティティクラスがSerializableをインプリメントし、hashCode()とequals()を自動生成する。
javaModelGeneratorのtrimStringsプロパティをtrueにすると、エンティティのsetterメソッドでtrimされる。
daoGeneratorはDAOを生成する。type="SPRING"とするとSpringのSqlMapClientDaoSupportを継承したDAO実装クラスを生成する。
methodNameCalculatorが不明。value="extended"って何するの??
tableのgeneratedKeyで「sqlStatement="MySQL" identity="true"」とすればMySQLのオートインクリメントを使ったキー生成を利用できる。