# mybatisについて(3)
## mybatisについて
これは今まで[1](https://hackmd.io/@ka-777/Hkdqwxvid),[2](https://hackmd.io/@ka-777/H1GFEtiod)とやってきたのでそちらを参照してください
今回は、ただSQLの内容をXMLファイルに入れるだけです。
## 3つ目のアプリ
### フォルダ構造
今回はSQLをXMLに記述していきます。
今回も前回までのを作成していない場合はそちらを作成するのをおすすめします。(前回より新しい内容だけコードを記述していきます)

### Mybatipseのインストール
mybatipseはMybatisのXMLファイルの編集等を補助してくれるプラグインなのでこれをインストールします

画像のようにヘルプを押すとEclipseマーケットプレースがあるのでそれをクリックして開きます

開くとこのような表示になるので検索と書いてあるところに画像のように「mybatipse」と入力して検索すると
画像のような変なアイコンがかかれたのが出ると思います。これを右下のインストールを押せばOKです。

しばらくすると上のようなライセンスの確認がでるので同意して進めていきます

インストールする際に上のような注意がでても問題ないのでそのまま続けます

インストールが終わると再起動しろと言われるので再起動をしたらそれでインストール終了です。
### XMLファイルの作成
src/main/resourcesで右クリック→新規→その他を押して、以下の画像のようにmybatisのとこに先ほどインストールしたものが入っています。

それで次へをおしたら親フォルダ名の最後に「dev/itboot/mb/mapper」を追加して名前をTeacherMapper.xmlにします
そしていつも通りダブルクリックを押すと画像のような形で
表示されるので下の方にあるデザインからソースに変更します。

ソースに変更するとコードを入力できるようになります。

ちなみにちゃんとできていると、xmlの3行目にある以下のリンクをctrlキーを押しながら左クリックするとファイルを自動的に開いてくれます
```
<mapper namespace="dev.itboot.mb.mapper.TeacherMapper">
```
そしてここからXMLを編集していきます
TeacherMapper.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="dev.itboot.mb.mapper.TeacherMapper">
<!-- mapperタグ内に、以下を追加 -->
<select id="selectAll" resultType="Teacher">
SELECT * FROM teacher
</select>
<select id="selectByPrimaryKey" resultType="Teacher">
SELECT * FROM teacher
WHERE id = #{id}
</select>
<insert id="insert">
INSERT INTO teacher(user_name, email)
VALUES(#{userName}, #{email})
</insert>
<update id="updateByPrimaryKey">
UPDATE teacher
SET user_name = #{userName}, email = #{email}
WHERE id = #{id}
</update>
<delete id="deleteByPrimaryKey">
DELETE FROM teacher
WHERE id = #{id}
</delete>
</mapper>
```
簡単に説明するとDB操作の内容をSELECT,INSERT,UPDATE,DELETEをそれぞれタグで分けてその中に記述します
この時のIDはJava側のメソッド名と一致させないとエラーになるので注意が必要です
resultTypeは結果の型を指定するだけです
また、今回はSQL文をXMLに書いているので、前回まではTeacherMapper.javaに記述していた@SELECT等のアノテーションとかをすべて消すことができます。
### application.propertiesの編集
XMLのパッケージ名を省略して記述できるようにするために以下の内容を追加します
前回までのをやっている人は2行目だけで大丈夫です
```
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.type-aliases-package=dev.itboot.mb.model
```
### Mapperクラスの編集
先ほどXMLのとこでも言いましたが、XMLのほうにSQL文を記述しているので前回まではすべてTeacherMapper.javaに記述していたのでそちらを削除&編集していきます
TeacherMapper.java
```
package dev.itboot.mb.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import dev.itboot.mb.model.Teacher;
@Mapper
public interface TeacherMapper {
// 各SQL文を削除します
List<Teacher> selectAll();
Teacher selectByPrimaryKey(Long id);
int insert(Teacher record);
int updateByPrimaryKey(Teacher record);
int deleteByPrimaryKey(Long id);
}
```
またここに記述してあるのがXMLファイルのそれぞれのIDの部分なのでXMLからそれぞれのIDをCtrlキーを押しながら左クリックをするとこちらのTeacherMapper.javaのメソッドに飛んでくることができます。
### 実行
今回は少ししか付け加えていないのでかなり短いと思いますがこれで完了したのでいつも通り実行します。
実行後は[ここ](http://localhost:8080/)にアクセスをします。
実行内容は前回と変わらないので割愛します(今回編集したのはSQLをXMLに入れただけなのでそれ以外のことはしていません)
### まとめ
難しい・。・
前回の内容↓↓↓↓↓↓
https://hackmd.io/@ka-777/Hkdqwxvid
次回の内容↓↓↓↓↓↓
https://hackmd.io/@ka-777/B1m00Inj_