Carpe Diem

  Top > スポンサー広告> Mapper > MyBatis を使う  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MyBatis を使う

2013 - 08/22 [Thu] - 00:24

MyBatisというORMapperを使ってDBとのやりとりを疎にします。
環境として

・MySQL 5.5
Eclipse (Pleiades) 4.3
・MyBatis 3.2.2

でやります。今回はMavenプロジェクトという便利な方法でやります。

◆Mavenプロジェクトの便利なところ
普通は「ライブラリである .jar ファイルを1つ1つダウンロード、ビルドパスの指定」をしなきゃいけないところを、 pom.xml にほしい .jar ライブラリを記述するだけで勝手にダウンロード、パス通しをしてくれるものです。

Pleiades
には標準で入っています。


◆MavenでMyBatis用プロジェクトを作成する

Mavenを使ったことが無い方は
Eclipse 4.2でMaven使えるようになるところまで
を一度試すと良いです。

Eclipse左メニューで右クリック→新規→その他 で
「Mavenプロジェクト」を検索して選びます。

「シンプルなプロジェクトの作成」にチェック→次へ

グループID: パッケージ名(jp.co.appとか)
アーティファクトID: プロジェクト名(mybatisTestとか)

で完了ボタンを押します。以下のようになると思います。

mybatis01.png


◆pom.xmlを編集してライブラリのダウンロード
pom.xmlを編集します。まず今回必要なのが

mybatis
mysql-connector-java

なので、それぞれのライブラリの最新版を
http://mvnrepository.com/
から用意します。検索すると出てきます。そのページに書いてある

    <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.2</version>
</dependency>



をコピペして、pom.xmlに以下のように貼り付けます。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jp.co.app</groupId>
<artifactId>mybatisTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.2</version>
</dependency>
</dependencies>
</project>



保存すると勝手にライブラリのダウンロードが始まります。


◆DBの作成
DBを作ります。

create database user_db;
create table user(
uid int primary key,
password text);


データは適当に入れておいて下さい。


これで準備が整いました。


◆MyBatisの使用
MyBatisで必要なのは以下の5つ(実際はプロパティファイルは必須でないので4つ)です。

・configファイル
・エンティティ
・マッパーインタフェース
・マッパー.xml(実装クラス)
・プロパティファイル

mybatis04.png


それぞれをDBに合わせて作ります。


◆Entityクラスの作成
User.java
package jp.co.app.entity;

public class User {
private int uid;
private String password;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}



◆マッパー系の作成
UserMapper.java
マッパーインタフェースです。ここでDBへのアクセスのメソッドを作る感じです。
package jp.co.app.data;

import java.util.List;

import jp.co.app.entity.User;

import org.apache.ibatis.annotations.Param;

public interface UserMapper {
List<User> selectAll();
int insert(@Param("userId") int userId, @Param("userPwd") String userPwd);
}



UserMapper.xml
マッパーの実装クラスのようなものです。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="jp.co.app.data.UserMapper">
<resultMap id="userResultMap" type="jp.co.app.entity.User">
<id column="uid" property="userId" />
<result column="password" property="userPwd" />
</resultMap>

<select id="selectAll" resultMap="userResultMap">
SELECT uid, password FROM user
</select>

<insert id="insert" parameterType="object">
INSERT INTO user (uid, password)
VALUES (#{userId}, #{userPwd})
</insert>
</mapper>



◆configの作成
mybatis-config.xml
設定ファイルです。DBにアクセスするための設定や、マッパーの登録をします。名前は任意です。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<properties resource="properties/config.properties" />

<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>

<mappers>
<mapper resource="jp/co/app/data/UserMapper.xml" />
</mappers>

</configuration>


◆プロパティファイル
config.properties
設定ファイルです。mybatis-config.xmlで読み込んでもらいます。名前は任意です。
#JDBC driver
driver=com.mysql.jdbc.Driver
#DB
url=jdbc:mysql://localhost:3306/test_db
#ID
username=root
#PASS
password=admin




◆テストコード
UserTest.java
SELECT と INSERT のテストをしてみました。
import java.util.List;

import jp.co.app.data.UserMapper;
import jp.co.app.entity.User;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class UserTest {
private static final String MYBATIS_CONFIG = "jp/co/app/data/mybatis-config.xml";

private static SqlSessionFactory sessionFactory;

public static void main(String[] args) {
Reader reader;
try {
reader = Resources.getResourceAsReader(MYBATIS_CONFIG);
} catch (IOException e) {
e.printStackTrace();
return;
}
sessionFactory = new SqlSessionFactoryBuilder().build(reader);

insertUser(10, "piyo");
getUserAll();
}

public static void getUserAll() {
final SqlSession sqlSession = sessionFactory.openSession();
List<User> resultList;

try {
resultList = sqlSession.getMapper(UserMapper.class).selectAll();
} finally {
sqlSession.close();
}
for (User entity : resultList) {
System.out.println(entity.getUserId());
System.out.println(entity.getUserPwd());
}
}

public static void insertUser(int uid, String pass) {
final SqlSession sqlSession = sessionFactory.openSession();
int result = 0;
try {
result = sqlSession.getMapper(UserMapper.class).insert(uid, pass);
if (result == 1) {
System.out.println("success");
} else {
System.out.println("fail");
}
sqlSession.commit();
} finally {
sqlSession.close();
}
}
}


ソース:
Eclipse 4.2でMaven使えるようになるところまで


コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。