MyBatis Generatorの導入について

MyBatis Generatorを使いマッパーを自動作成することで、DBに接続する際のマッパー作成を省略することが出来ます。
使用の手順として
「Spring MVCについて」で作成したやまびこアプリを使用します。

手順

ヘルプから新規ソフトウェアのインストールをクリック
作業対象の部分に以下の文字列を貼り付け
nybatis generator – http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/

myb01
名前欄にMyBatisGeneratorが出るので、チェックを入れ次へ
ライセンスのレビューページで、使用条件の条項に同意しますにチェックを入れる
完了ボタンを押すとインストールが始まる
この方法でインストールに失敗した場合は、直接MyBatis Generatorを入れる必要があります。

その場合の手順としては、以下URLにアクセス。
https://github.com/mybatis/generator
上記URLより、generator-master.zip ファイルをダウンロードする。
ファイルを解凍した後の以下のフォルダより、各種jar(Version1.3.1を対象)をEclipseのプラグインフォルダに配置する。
generator-master/eclipse/UpdateSite/plugins
例)
org.mybatis.generator.core_1.3.1.201101032122.jar

①エクリプスの機能を使用してインストールした場合
エクリプスのメニューの[ヘルプ]から[インストール詳細]を選択
[インストール済みのソフトウェア]の一覧に[mybatis Generator]が表示される。

②手動インストールの場合
エクリプスのメニューの[ヘルプ]から[インストール詳細]を選択
[プラグイン]の一覧に[mybatis Generator]が表示される。
印刷しようとしたメッセージは、Information Rights Management で保護されています。このメッセージの印刷に必要なユーザー権限が送信者から与えられませんでした。

次にJDBCドライバの導入をします。
「sqljdbc4-3.0.jar」で検索し、jarファイルをダウンロードする。
プロジェクト名フォルダの中に、libフォルダを作成。
上記でダウンロードした「sqljdbc4-3.0.jar」をlibフォルダに入れる。
プロジェクト名を右クリックし、プロパティを開く。
Javaのビルド・パスを選択し、Jar追加のボタンをクリック。

myb03_1

プロジェクト名\lib内のsqljdbc4-3.0.jarを選択し、OKボタンを押すと
ライブラリにsqljdbc4-3.0.jarが追加されるので、OKボタンを押しじる。
myb03_2

次にgeneratorConfig.xmlを使用するための説明をします。
プロジェクト名\src\main直下の、resourcesフォルダ内に、generatorConfig.xmlを作成
エクリプス上で generatorConfig.xml の作成したいフォルダを選択して以下の手順
[ファイル]を選択して[新規]→[その他]の手順で出たウィザード選択から、
[MyBatis]の[MyBatis Generator Configuration File]選択して、[次へ]から[完了]で作成される。
mybatis

プロジェクト名\src\main\javaに、modelフォルダを作成。
modelフォルダ内に、entityとmapperフォルダを作成。
generatorConfig.xmlの内容について。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration >
  <classPathEntry location="C:XXXX\lib\sqljdbc4-3.0.jar" />
  <context id="context1" >
    <jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
     connectionURL="jdbc:sqlserver://localhost:1433;" userId="ユーザID" password="パスワード" />
    <javaModelGenerator targetPackage="model.entity" targetProject="プロジェクト名" />
    <sqlMapGenerator targetPackage="model.mapper" targetProject="プロジェクト名" />
    <javaClientGenerator targetPackage="model.mapper" targetProject="プロジェクト名" type="XMLMAPPER" />
    <table catalog="データベース名" schema="dbo" tableName="テーブル名" />
  </context>
</generatorConfiguration>

記述の仕方が環境によって変わります。以下のように書き換えて使用してください。
4行目:C:XXXX~はフォルダ階層の環境に合わせてください。
7行目:userId=”” password=””はDBサーバに接続する際の、ログインIDとパスワードを記述。
8、9、10行目:targetProject=””は、プロジェクト名を記述。
11行目:catalog=””にデータベース名、tableName=””にテーブル名を記述。

書き換えが終わったら、
プロジェクト名\src\main\resourcesにあるgeneratorConfig.xmlを右クリック
Generate MyBatis/BATIS Artifactsをクリック
myb02

完了すると、entityフォルダにjavaファイルが2つ。
mapperフォルダにjavaファイルとxmlファイルが1つずつ出来る。
myb04

こちらは変換の際に使用したDBです。
dbset01

この時、DBのテーブル名は「t_person」となっており、スネークケースで命名しています。
Generatorで変換した際に、スネークケースで書かれた名前はJavaと互換のあるキャメルケースに書き換わります。
テーブルの列名も「person_id」「parson_name」「gender」「age」とスネークケースで書かれていましたが、変換によりMapperの中身はキャメルケースの表記になりました。

それぞれのファイルの中身の一部です。

 

package model.entity;

public class TPerson {
    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database column sampleDB.dbo.t_person.person_id
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    private Integer personId;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database column sampleDB.dbo.t_person.person_name
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    private String personName;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database column sampleDB.dbo.t_person.gender
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    private String gender;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database column sampleDB.dbo.t_person.age
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    private Integer age;

    /**
     * This method was generated by MyBatis Generator.
     * This method returns the value of the database column sampleDB.dbo.t_person.person_id
     *
     * @return the value of sampleDB.dbo.t_person.person_id
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
package model.entity;

import java.util.ArrayList;
import java.util.List;

public class TPersonExample {
    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    protected String orderByClause;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    protected boolean distinct;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    protected List<Criteria> oredCriteria;

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    public TPersonExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }
package model.mapper;

import java.util.List;
import model.entity.TPerson;
import model.entity.TPersonExample;
import org.apache.ibatis.annotations.Param;

public interface TPersonMapper {
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    int countByExample(TPersonExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    int deleteByExample(TPersonExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    int deleteByPrimaryKey(Integer personId);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */
    int insert(TPerson record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table sampleDB.dbo.t_person
     *
     * @mbggenerated Fri Apr 08 14:43:25 JST 2016
     */

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA