一緒にMyBatisの入門編を学びましょう
37724 ワード
概要
本文は1つの簡単な小さい例で、Javaプロジェクトの開発の中でMyBatisの基本的な使い方を簡単に述べて、入門級の文章に属して、ただ勉強して分かち合うために使用して、足りないところがあれば、また指摘してください.
MyBatisとは?
MyBatisは、SQLのカスタマイズ、ストレージ・プロシージャ、高度なマッピングをサポートする優れた永続層フレームワークです.MyBatisは、ほとんどのJDBCコードと手動でパラメータを設定し、結果セットを取得することを回避します.MyBatisは、単純なXMLまたは注釈を使用して、オリジナルタイプ、インタフェース、およびJavaのPOJO(Plain Old Java Objects、通常の古いJavaオブジェクト)をデータベース内のレコードとして構成およびマッピングできます.
MyBatis環境の構築
環境構築手順:
1.Javaプロジェクトを新規作成し、必要なJarパッケージを導入します.
MyBatisに必要なJarバッグは、次のように2つあります.
2.MyBatisプロファイルの追加
srcディレクトリの下に、MyBatisのプロファイル「mybatis-config.xml」を追加し、主にデータベース接続に関する環境情報とMapper情報を構成します.具体的な内容は以下の通りです. environmentsノードはデータベース環境を構成し、複数の構成があり、defaultはデフォルトでどの環境に接続されているかを示します. mappersは、導入されたマッピングファイルを構成し、相対パス方式を採用する.
3.モデルクラスを追加
この例では、次の3つのプロパティを含むProductクラスを追加します.
4.新たにマッパーファイルを追加
データベースを操作するためのProductMapper.xmlファイルを追加し、データテーブルProductsのCRUD操作を含む.次のようになります. mapperノードのnamespaceプロパティは、このマッピングファイルの一意のIDを表します. ラベルのidプロパティは、ファイル内の一意の値を表し、対応する文を検索します. parameterTypeはパラメータのデータ型を表す. resultTypeは、返されるデータ型を表し、クラスオブジェクトの場合はフルネームである必要があります. sql文のプレースホルダは、#{属性名}形式で、むやみに書いてはいけません. 注意:namespace+idは、プロジェクト全体で一意でなければなりません.
4.使用方法
具体的なコードは次のとおりです.は、まず入力ストリームとしてプロファイルをロードする. データストリームからSqlSessionFactoryオブジェクトを作成する SqlSession を開く関連動作 を実行する.セッションオブジェクト を閉じる
CRUD操作対象
データテーブルの添削については、以下のようにします.
ダイナミックエージェント
以上の基本的な書き方に加えて、MyBatisはダイナミックエージェントのモードを提供し、具体的な手順は以下の通りです.
1.インタフェースProductMapperを追加
インタフェースの約束は次のとおりです.パッケージ名+インタフェース名は、ProudctMapper.xmlのnamespaceと一致しています. 関数名は、Mapperファイル内のラベルのIDと一致します. 関数パラメータタイプは、Mapperファイルで構成されているparameterTypeと一致します. 関数の戻りタイプは、Mapperファイルで構成されているresultTypeと一致し、resultTypeがない場合はvoidを返します.
2.動的エージェント呼び出し方式
次のようになります.は、まず入力ストリームとしてプロファイルをロードする. データストリームからSqlSessionFactoryオブジェクトを作成する SqlSession を開く ProudctMapperインタフェースオブジェクトを取得します. は、インタフェースメソッドを呼び出して動作を実行する. セッションオブジェクト を閉じる
3.その他のCRUD操作
動的エージェントの添削により、以下のように変更されます.
MyBatisマニュアルについて ,毎日一歩勉強して、大きな一歩を越えることを堅持します.
コメント
定波紋・3月7日
作者:蘇軾(宋)
3月7日,砂湖道で雨に遭った.雨具が先に行って、同行者はみな狼狽して、余独は気づかない.すでに晴れたので,これを作った.
林を通り抜けて葉を打つ音を聞いてはいけない.竹杖の芒靴は馬に軽く勝って、誰が恐れますか?一蓑の煙雨は平生に任せる.
切り立った春風が酒を吹いて目が覚め、少し寒くて、山の斜面が照らし合っている.振り返ってみると、昔はスマートで、帰っても、風雨も晴れもしなかった.
本文は1つの簡単な小さい例で、Javaプロジェクトの開発の中でMyBatisの基本的な使い方を簡単に述べて、入門級の文章に属して、ただ勉強して分かち合うために使用して、足りないところがあれば、また指摘してください.
MyBatisとは?
MyBatisは、SQLのカスタマイズ、ストレージ・プロシージャ、高度なマッピングをサポートする優れた永続層フレームワークです.MyBatisは、ほとんどのJDBCコードと手動でパラメータを設定し、結果セットを取得することを回避します.MyBatisは、単純なXMLまたは注釈を使用して、オリジナルタイプ、インタフェース、およびJavaのPOJO(Plain Old Java Objects、通常の古いJavaオブジェクト)をデータベース内のレコードとして構成およびマッピングできます.
MyBatis環境の構築
環境構築手順:
1.Javaプロジェクトを新規作成し、必要なJarパッケージを導入します.
MyBatisに必要なJarバッグは、次のように2つあります.
1 //MyBatis
2 mybatis-3.5.3.jar
3 //MySql
4 mysql-connector-java-5.1.6.jar
2.MyBatisプロファイルの追加
srcディレクトリの下に、MyBatisのプロファイル「mybatis-config.xml」を追加し、主にデータベース接続に関する環境情報とMapper情報を構成します.具体的な内容は以下の通りです.
1 xml version="1.0" encoding="UTF-8" ?>
2 DOCTYPE configuration
3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
5 <configuration>
6
7 <properties resource="db.properties">properties>
8
9 <environments default="development">
10 <environment id="development">
11 <transactionManager type="JDBC" />
12
17 <dataSource type="POOLED">
18 <property name="driver" value="${jdbc.driver}" />
19 <property name="url" value="${jdbc.url}" />
20 <property name="username" value="${jdbc.username}" />
21 <property name="password" value="${jdbc.password}" />
22 dataSource>
23 environment>
24 environments>
25 <mappers>
26 <mapper resource="com/hex/mybatis/ProductMapper.xml" />
27 mappers>
28 configuration>
3.モデルクラスを追加
この例では、次の3つのプロパティを含むProductクラスを追加します.
1 package com.hex.mybatis;
2
3 /**
4 *
5 * @author Administrator
6 *
7 */
8 public class Product {
9
10 private String pid; // ID
11 private String pname; // name
12 private float price; //
13
14 public Product() {
15
16 }
17
18 public Product(String pid, String pname, float price) {
19 this.pid = pid;
20 this.pname = pname;
21 this.price = price;
22 }
23
24 public String getPid() {
25 return pid;
26 }
27 public void setPid(String pid) {
28 this.pid = pid;
29 }
30 public String getPname() {
31 return pname;
32 }
33 public void setPname(String pname) {
34 this.pname = pname;
35 }
36 public float getPrice() {
37 return price;
38 }
39 public void setPrice(float price) {
40 this.price = price;
41 }
42
43 @Override
44 public String toString() {
45 // TODO Auto-generated method stub
46 return "PID="+this.pid+",PNAME="+this.pname+",PRICE="+this.price;
47 }
48 }
4.新たにマッパーファイルを追加
データベースを操作するためのProductMapper.xmlファイルを追加し、データテーブルProductsのCRUD操作を含む.次のようになります.
1 xml version="1.0" encoding="UTF-8" ?>
2 DOCTYPE mapper
3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
6 <mapper namespace="com.hex.mybatis.ProductMapper">
7
12 <select id="queryProductById" resultType="com.hex.mybatis.Product"
13 parameterType="String">
14 select * from Products where pid = #{id}
15 select>
16
17
18 <select id="queryProductAll" resultType="com.hex.mybatis.Product">
19 select * from Products where 1=1
20 select>
21
22
25 <insert id="addProduct" parameterType="com.hex.mybatis.Product" >
26 insert into Products(pid,pname,price)values(#{pid},#{pname},#{price})
27 insert>
28
29
30 <update id="updateProductById" parameterType="com.hex.mybatis.Product">
31 update products set pname=#{pname},price=#{price} where pid=#{pid}
32 update>
33
34
35 <delete id="deleteProductById" parameterType="String">
36 delete from products where pid=#{pid}
37 delete>
38 mapper>
4.使用方法
具体的なコードは次のとおりです.
1 //
2 String resource = "mybatis-config.xml";
3 InputStream inputStream = Resources.getResourceAsStream(resource);
4 // SqlSessionFactory ,build environment id,, , default.
5 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
6 //
7 SqlSession session = sqlSessionFactory.openSession();
8 //------------------- ---------------------
9 // , queryProductById , , :namespace+id
10 Product product = session.selectOne("queryProductById", "A-002");
11 System.out.println(product.toString());
12 //---------------------End-------------------------
13 //
14 session.close();
CRUD操作対象
データテーブルの添削については、以下のようにします.
1 //------------------- ---------------------
2 Product product =new Product("A-006"," ",3.5f);
3 int count = session.insert("addProduct",product);
4 session.commit();
5 System.out.println(" "+count+" !!!");
6 //---------------------End-------------------------
7 //------------------- ---------------------
8 Product product =new Product("A-004"," ",3.2f);
9 int count = session.update("updateProductById", product);
10 session.commit();
11 System.out.println(" "+count+" !!!");
12 //---------------------End-------------------------
13 //------------------- ---------------------
14 int count = session.delete("deleteProductById", "A-002");
15 session.commit();
16 System.out.println(" "+count+" !!!");
17 //---------------------End-------------------------
18 //------------------- ---------------------
19 List lstProduct = session.selectList("queryProductAll");
20 for(Product p : lstProduct){
21 System.out.println(p);
22 }
23 //---------------------End-------------------------
ダイナミックエージェント
以上の基本的な書き方に加えて、MyBatisはダイナミックエージェントのモードを提供し、具体的な手順は以下の通りです.
1.インタフェースProductMapperを追加
インタフェースの約束は次のとおりです.
1 package com.hex.mybatis;
2
3 import java.util.List;
4
5 /**
6 * ProductMapper.xml namespace
7 *
8 * @author Administrator
9 *
10 */
11 public interface ProductMapper {
12 /**
13 * ID : 1. Mapper ID 2. parameterType 3.
14 * resultType
15 *
16 * @param pid
17 * @return
18 */
19 Product queryProductById(String pid);
20
21 /**
22 *
23 *
24 * @return
25 */
26 List queryProductAll();
27
28 /**
29 *
30 *
31 * @param product
32 */
33 void addProduct(Product product);
34
35 /**
36 *
37 *
38 * @param product
39 */
40 void updateProductById(Product product);
41
42 /**
43 *
44 *
45 * @param pid
46 */
47 void deleteProductById(String pid);
48
49 }
2.動的エージェント呼び出し方式
次のようになります.
1 //
2 String resource = "mybatis-config.xml";
3 InputStream inputStream = Resources.getResourceAsStream(resource);
4 // SqlSessionFactory ,build environment id,, , default.
5 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
6 //
7 SqlSession session = sqlSessionFactory.openSession();
8 //------------------- ---------------------
9 ProductMapper productMapper = session.getMapper(ProductMapper.class);
10 //
11 Product product=productMapper.queryProductById("A-001");
12 System.out.println(product);
13 //
14 session.close();
3.その他のCRUD操作
動的エージェントの添削により、以下のように変更されます.
1 //
2 List lstProduct= productMapper.queryProductAll();
3 for(Product p : lstProduct){
4 System.out.println(p);
5 }
6 //
7 Product product =new Product("A-007"," ",3.2f);
8 productMapper.addProduct(product);
9 session.commit();
10 System.out.println(" !!!");
11 //
12 Product product =new Product("A-004"," ",3.5f);
13 productMapper.updateProductById(product);
14 session.commit();
15 System.out.println(" !!!");
16 //
17 productMapper.deleteProductById("A-005");
18 session.commit();
19 System.out.println(" ");
20 //---------------------End-------------------------
MyBatisマニュアルについて ,毎日一歩勉強して、大きな一歩を越えることを堅持します.
コメント
定波紋・3月7日
作者:蘇軾(宋)
3月7日,砂湖道で雨に遭った.雨具が先に行って、同行者はみな狼狽して、余独は気づかない.すでに晴れたので,これを作った.
林を通り抜けて葉を打つ音を聞いてはいけない.竹杖の芒靴は馬に軽く勝って、誰が恐れますか?一蓑の煙雨は平生に任せる.
切り立った春風が酒を吹いて目が覚め、少し寒くて、山の斜面が照らし合っている.振り返ってみると、昔はスマートで、帰っても、風雨も晴れもしなかった.