MyBatis(3)

1.MyBatis関連の
構成ファイル1.1.MyBatisコア構成ファイル

1.1.1。名前-自分で定義できます。** [mybatis-config.xml] **を使用することをお勧めします。1.1.2。Mavenによって作成され
た場所
IntelliJ IDEAプロジェクトは通常、src / main / resourcesディレクトリに保存されます。
1.1.3。ファイル内の構成要素とその属性
例:

<?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="mydata.properties"></properties>
    <!-- 配置mybatis默认的连接数据库的环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 配置事务管理器 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${mydriver}"/>
                <property name="url" value="${myurl}"/>
                <property name="username" value="${myusername}"/>
                <property name="password" value="${mypassword}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--注册数据访问接口-->
        <mapper resource="PersonMapper.xml"></mapper>
    </mappers>
</configuration>

分析:
<?xml version = "1.0" encoding = "UTF-8"?> — xmlファイルのファイルヘッダーを表し、MyBatisのコア構成ファイルがxmlファイルであることを示します。
-MyBatis構成ファイルの形式をインポートします。xmlファイルに最初に表示されたタグを定義できますが、MyBatis構成ファイルの形式を導入すると、xmlファイルでタグを定義できなくなります。MyBatis構成ファイルの形式を使用して、タグのデフォルトセット。
-MyBatis構成ファイルの形式で提供されるMyBatisコア構成ファイルのルート要素。
<properties resource="mydata.properties"></properties>MyBatisコア構成ファイルの構成要素のサブ要素は、「xxxx.properties」リソースファイルを現在のコア構成ファイルに導入します。resources属性を介してインポートされた、インポートされた「xxxx.properties」リソースファイルは、src / main / resourcesディレクトリに配置する必要があります。インポートされた「xxxx.properties」リソースファイルがsrc / main / resourcesディレクトリの下のサブフォルダーに配置されている場合は、「subfolder name \ xxxx.properties」を指定する必要があります。
例:—MyBatis
コア構成ファイルの構成要素子の要素は、MyBatisを構成するためのデータベース接続環境を定義します。デフォルト属性:デフォルト値は開発です。
-特定のデータベース接続環境の構成値を指定する環境サブ要素です。
データベース接続環境のトランザクションマネージャーを指定します。type属性があり、この属性の値によって、トランザクション管理を操作するユーザーが決まります。
JDBC -この構成は、直接JDBCのコミットやロールバックの設定を使用し、それはトランザクションのスコープを管理するために、データソースから取得した接続に依存しています。
MANAGED -この設定は、ほとんど何もしません。接続をコミットまたはロールバックすることはありませんが、コンテナーがトランザクションのライフサイクル全体(JEEアプリケーションサーバーのコンテキストなど)を管理できるようにします。デフォルトでは接続が閉じられますが、一部のコンテナーはこれを望まないため、デフォルトの閉じ動作を防ぐためにcloseConnectionプロパティをfalseに設定する必要があります。

<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

-Spring + MyBatisを使用している場合、Springモジュールは独自のマネージャーを使用して以前の構成を上書きするため、トランザクションマネージャーを構成する必要はありません。

<dataSource type="POOLED">
     <property name="driver" value="${mydriver}"/>
     <property name="url" value="${myurl}"/>
     <property name="username" value="${myusername}"/>
     <property name="password" value="${mypassword}"/>
</dataSource>
<dataSource  type="POOLED"></dataSource>


-データベース接続環境のデータソース構成を指定します[データベースドライバー、URL、ユーザー名、パスワード] dataSource要素のタイプはdataであり、構成はデータベース接続プールテクノロジを使用するかどうかを指定します。
UNPOOLED-このデータソースの実装は、要求されるたびに接続を開いたり閉じたりするだけです。少し遅いですが、タイムリーに利用可能な接続に関してパフォーマンス要件がない単純なアプリケーションには適しています。この点でデータベースが異なればパフォーマンスも異なるため、一部のデータベースに接続プールを使用することは重要ではなく、この構成も理想的です。
POOLED-このデータソースの実現では、「プール」の概念を使用してJDBC接続オブジェクトを編成し、新しい接続インスタンスの作成に必要な初期化と認証の時間を回避します。これは、並行Webアプリケーションが要求に迅速に応答できるようにする一般的な処理方法です。
JNDI-このデータソースは、EJBやアプリケーションサーバーなどのコンテナで使用するために実装されます。コンテナは、データソースを中央または外部で構成し、JNDIコンテキストへの参照を配置できます。
-データアクセスインターフェイスに対応するSQLマッピングファイルのパス/アドレスを設定します。
特定の構成:
1。プロジェクト構造を変更し、SQLマッピングファイルをsrc / main / resourcesに保存するパッケージを作成します。
ここに画像の説明を挿入

2.SQLマッピングファイルを追加します
ここに画像の説明を挿入

3.SQLマッピングパスをコア構成ファイルに追加します

<mappers>
        <mapper resource="com/wangxing/mybatis/mapper/PersonMapper.xml"/>
</mappers>

4.プロジェクトを閉じて、再度開きます

<mappers>
        <package name="com.wangxing.mybatis.mapper"/>
</mappers>

パッケージ全体ですべてのSQLマッピングファイルをロードできます。

<mappers>
        <mapper class="com.wangxing.mybatis.mapper.PersonMapper"></mapper>
</mappers>
<mappers>
        <mapper url="file:///F:/20200728/MyBatis/PersonMapper.xml"></mapper>
</mappers>

1.2.SqlMapperマッピングファイル[ファイル]
1.2.1。[サフィックス「.xml」としてのデータアクセスインターフェイス名の名前]
1.2.2位置1.src
/ main / resources
コア構成ファイル内の同じコア構成ファイル:
2。src/ main / resources
コア構成ファイルの下のサブフォルダー内:
3。[再起動] src / main / resourcesの下のプロジェクト構造を変更して作成されたパッケージ内の
コア構成ファイル:

<mapper resource="com/wangxing/mybatis/mapper/PersonMapper.xml"/>
<package name="com.wangxing.mybatis.mapper"/>
<mapper class="com.wangxing.mybatis.mapper.PersonMapper"></mapper>

4.プロジェクトではなく、指定されたディレクトリに
コア構成ファイル:

1.2.3。ファイル内の構成要素と属性
例:

<?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="com.wangxing.mybatis.mapper.PersonMapper">
    <insert id="insertPerson" parameterType="com.wangxing.mybatis.bean.Person">
        insert into t_person values (null,#{pername},#{perage},#{peraddress});
    </insert>
    <update id="updatePerson" parameterType="com.wangxing.mybatis.bean.Person">
        update t_person set per_name=#{pername},per_age=#{perage},per_address=#{peraddress} where per_id=#{perid};
    </update>
    <resultMap id="personMap" type="com.wangxing.mybatis.bean.Person">
        <id column="per_id" property="perid"></id>
        <result column="per_name" property="pername"></result>
        <result column="per_age" property="perage"></result>
        <result column="per_address" property="peraddress"></result>
    </resultMap>
    <select id="selectPersonById" parameterType="int" resultMap="personMap">
        select * from  t_person where per_id=#{perid};
    </select>
    <select id="selectPerson" resultMap="personMap">
        select * from  t_person;
    </select>
    <delete id="deletePersonById" parameterType="java.lang.Integer">
        delete from t_person where per_id=#{perid};
    </delete>
</mapper>

分析:
<?xml version="1.0" encoding="UTF-8"?>—xmlファイルのヘッダー。MyBatisのコア構成ファイルがxmlファイルであることを示します。

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

-SQLマッピングファイルの形式を紹介します。xmlファイルに最初に表示されたタグを定義できますが、SQLマッピングファイルの形式を導入した後、xmlファイルでタグを定義することはできなくなります。SQLマッピングファイルの形式を使用して、タグのデフォルトセット。
<mapper namespace="com.wangxing.mybatis.mapper.PersonMapper">-sqlマッピングファイルのルート要素には、データアクセスインターフェイスのパッケージ名+インターフェイス名を設定するために使用される名前空間属性があります。

<insert id="insertPerson" parameterType="com.wangxing.mybatis.bean.Person">
        insert into t_person values (null,#{pername},#{perage},#{peraddress});

----データの挿入に使用されるSQLステートメント
IDを構成します—
データアクセスインターフェイスにデータを追加するメソッド名前parameterType ----データアクセスインターフェイスにデータメソッドを追加するパラメーターのタイプ
1.PoJoタイプ[オブジェクトタイプ]com.wangxing。mybatis.bean.Person2。
基本タイプ[文字列、基本タイプ、パッケージタイプ]
文字列-java.lang.String基本タイプ-int
、ブール...
パッケージクラス-java.lang.Ingeter
3.コレクションタイプ[リスト、hashMap]

 <update id="updatePerson" parameterType="com.wangxing.mybatis.bean.Person">
        update t_person set per_name=#{pername},per_age=#{perage},per_address=#{peraddress} where per_id=#{perid};
</update>----配置修改数据用的sql语句

id-
データアクセスインターフェイスのデータを変更するメソッドの名前parameterType-データアクセスインターフェイスのデータを変更するメソッドのパラメータタイプ
1.PoJoタイプ[オブジェクトタイプ] com.wangxing.mybatis.bean.Person
2.基本タイプ[文字列、基本タイプ、パッケージタイプ]
文字列-java.lang.String
基本タイプ-int 、ブール...
パッケージタイプ
-java.lang.Ingeter 3.コレクションタイプ[リスト、hashMap]

t_personから削除ここでper_id =#{perid};
-
データの削除に使用されるsqlステートメントIDを構成します-
データアクセスインターフェイスでデータを削除する方法の名前parameterType ----データアクセスインターフェイスでデータを削除する方法のパラメータタイプ
1.PoJoタイプ[オブジェクトタイプ]com.wangxing。mybatis.bean.Person2。
基本タイプ[文字列、基本タイプ、パッケージタイプ]
文字列-java.lang.String基本タイプ-int
、ブール...
パッケージクラス-java .lang.Ingeter
3.コレクションタイプ[list、hashMap]

select * from t_person where per_id =#{perid};
----
データのクエリに使用されるsqlステートメントIDを構成します。データアクセスインターフェース
parameterType ----データアクセスインターフェイスのデータクエリメソッドのパラメータタイプ
1.PoJoタイプ[オブジェクトタイプ] com.wangxing.mybatis.bean.Person
2.基本タイプ[文字列、基本タイプ、パッケージタイプ]文字列
— java.lang .String
基本タイプ-int 、boolean ...
パッケージクラス
-java.lang.Ingeter3。コレクションタイプ[list、hashMap]
resultMap-クエリの結果タイプの構成要素[データベーステーブルの列名とエンティティクラスメンバー変数の名前が異なります]
resultType:クエリの結果タイプを設定します。[データベーステーブルの列の名前は、エンティティクラスのメンバー変数の名前と同じです]

 <resultMap id="personMap" type="com.wangxing.mybatis.bean.Person">
        <id column="per_id" property="perid"></id>
        <result column="per_name" property="pername"></result>
        <result column="per_age" property="perage"></result>
        <result column="per_address" property="peraddress"></result>
  </resultMap>

id属性-クエリの結果タイプの名前。実際には、select要素のresultMapの属性値です。type
属性-クエリの結果の特定のタイプ[javaエンティティクラスのクラス名]
があります。現在、resultMap要素の2種類のサブ要素
—主キー列の構成マッピング
—非主キー列のマッピング
列プロパティの構成—データベーステーブル
プロパティプロパティの列名—javaエンティティのメンバー変数の名前クラス。
2. MyBatisのコア構成ファイルのtypeAliases要素の機能、構成方法、および使用方法は何ですか?
typeAliases要素-MyBatisのコア構成ファイルに表示され、SQLマッピングファイルのデータ型のエイリアスを設定するために使用されます。SQLマッピングファイルのデータ型、挿入要素のパラメーター型、およびresultMap要素のtypes属性はすべて、データ型を必要とします。typeAliases要素を設定しない場合、SQLマッピングファイルのデータ型はパッケージ名+クラス名である必要があります。
1.1つのクラスに1つのエイリアス[デフォルトのエイリアス]
MyBatisのコア構成ファイル

<typeAliases>
    <!--默认的别名 [类名,不区分大小写]-->
    <typeAlias type="com.wangxing.mybatis.bean.Person"></typeAlias>
</typeAliases>
Sql映射文件
<insert id="insertPerson" parameterType="Person">
    insert into t_person values (null,#{pername},#{perage},#{peraddress});
</insert>
<update id="updatePerson" parameterType="person">
    update t_person set per_name=#{pername},per_age=#{perage},per_address=#{peraddress} where per_id=#{perid};
</update>

2.1つのクラスに1つのエイリアス[エイリアスを指定]

<typeAliases>
    <typeAlias alias="personBean" type="com.wangxing.mybatis.bean.Person"></typeAlias>
</typeAliases>

SQLマッピングファイル

<resultMap id="personMap" type="personBean">
    <id column="per_id" property="perid"></id>
    <result column="per_name" property="pername"></result>
    <result column="per_age" property="perage"></result>
    <result column="per_address" property="peraddress"></result>
</resultMap>
<select id="selectPersonById" parameterType="int" resultMap="personMap">
    select * from  t_person where per_id=#{perid};
</select>

3.指定されたパッケージ[クラス名、大文字と小文字を区別しない]の下にあるすべてのクラスのエイリアスを自動的に生成します。

<typeAliases>
    <!--指定包下的所有类自动生成别名【类名,不区分大小写】-->
    <package name="com.wangxing.mybatis.bean"/>
</typeAliases>
SQL映射文件
<insert id="insertPerson" parameterType="Person">
    insert into t_person values (null,#{pername},#{perage},#{peraddress});
</insert>
<update id="updatePerson" parameterType="person">
    update t_person set per_name=#{pername},per_age=#{perage},per_address=#{peraddress} where per_id=#{perid};
</update>

3. SQLマッピングファイルのselect要素resultType属性とresultMap属性の違いは何ですか?[出力データは戻り値です]
resultType / resultMapは、クエリステートメントの実行後に返される結果の型表現属性です。resultType

、結果のデータ型示すためにsqlマッピングファイルのselect要素で使用されます。データベース操作の実行後に返されます。
この結果は、次の3種類のデータで処理できます
。1。単純型。例:string、long、integer、doubleなど
。2、pojoタイプ。例:Person、Userなど
。3。HashMapタイプ。
データベーステーブルの列名がエンティティクラスのメンバー変数の名前と同じである場合、resultTypeは通常、返される結果データ型を指定するように設定されます。
データベーステーブル

create  table t_person(
per_id int primary key auto_increment,
per_name varchar(20),
per_age int,
per_address varchar(30)
);

package com.wangxing.mybatis.bean;

public class Person {
    private int per_id;
    private String per_name;
    private int per_age;
    private String per_address;
........
getXXX()、setXXX()
}

データアクセスインターフェース

import com.wangxing.mybatis.bean.Person;
import java.util.List;
public interface PersonMapper {
    /**
     * 查询所有数据
     * @return
     */
    List<Person> selectPerson();
}

SQLマッピングファイル

<?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="com.wangxing.mybatis.mapper.PersonMapper">
    <select id="selectPerson" resultType="com.wangxing.mybatis.bean.Person">
        select * from  t_person;
    </select>
</mapper>

resultMapは、データベース操作の実行後に返される結果データのタイプを表します。
ResultMapは、mybatisで最も重要で強力な要素です。resultmapを使用すると、2つの問題を解決できます。1。JavaBean
の属性名とテーブルフィールド名の間の不整合の問題。
データベーステーブル

create  table t_person(
per_id int primary key auto_increment,
per_name varchar(20),
per_age int,
per_address varchar(30)
);

package com.wangxing.mybatis.bean;

public class Person {
    private int perid;
    private String pername;
    private int perage;
    private String peraddress;
........
getXXX()、setXXX()
}

データアクセスインターフェース

import com.wangxing.mybatis.bean.Person;
import java.util.List;
public interface PersonMapper {
    /**
     * 查询所有数据
     * @return
     */
    List<Person> selectPerson();
}

SQLマッピングファイル

<?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="com.wangxing.mybatis.mapper.PersonMapper">
    <resultMap id="personMap" type="com.wangxing.mybatis.bean.Person">
        <id column="per_id" property="perid"></id>
        <result column="per_name" property="pername"></result>
        <result column="per_age" property="perage"></result>
        <result column="per_address" property="peraddress"></result>
    </resultMap>
    <select id="selectPerson" resultMap="personMap">
        select * from  t_person;
    </select>
</mapper>

おすすめ

転載: blog.csdn.net/guoguo0717/article/details/109536739