【MyBatis】Mybatisの追加、削除、修正、設定ファイルの利用について

1.MyBatisを初めて知る

MyBatis 公式 Web サイト: MyBatis 公式 Web サイト
1. MyBatis とは
MyBatis は、一般的な SQL クエリ、ストアド プロシージャ、および高度なマッピングをサポートする永続レイヤー フレームワークです. MyBatis フレームワークは、ORM (オブジェクト/リレーショナル マッピング、オブジェクト-リレーショナル マッピング) とも呼ばれます。 )フレームワーク

ORM の主な役割は、オブジェクト指向メソッドを使用してプログラミングで永続オブジェクトを操作し、オブジェクト指向の概念をデータベース内のテーブルに対応させることです。
ここに画像の説明を挿入

この時点でデータベース内のテーブルに対応するクラスを定義し、このオブジェクトのインスタンスはテーブル内のレコードに対応します。

Java の概念 データベースの概念
親切 水面
属性 フィールド/列
物体 レコード/ライン

2. 特徴
(1) 軽量、優れたパフォーマンス、インターフェース指向プログラミング
(2) SQL と Java のビジネス コードの分離
(3) XML またはアノテーションを構成とマッピングに使用可能
3. MyBatis インターフェース指向プログラミングは 2 つと一致しています
( 1) マッピング ファイルの名前空間は、マッパー インターフェイスの完全なクラス名と一致している必要があります
(2) マッピング ファイル内の SQL ステートメントの ID は、マッパー インターフェイスのメソッド名と一致している必要があります
ここに画像の説明を挿入
4. の実行プロセスMybatis フレームワーク
(1) mybatis 構成ファイルを読み取る;
(2) マッピング ファイル xxxMapper.xml をロードする;
(3) セッション ファクトリ SqlSessionFactory を構築する;
(4) セッション オブジェクト SqlSession を構築する;
(5) エグゼキュータ、関連する操作を実行する;
(6) MappedStatement オブジェクト;
(7) 入力マッピング;
(8) 出力マッピング;

@Test
public void insertUser() throws Exception {
    
    
    // 1.读取配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    // 2.根据配置文件构建SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    // 3.通过sqlSessionFactory创建SqlSession
    //SqlSession默认不自动提交事务,若需要自动提交,需要设置sqlSessionFactory.openSession(true)即可自动提交
    SqlSession session = sqlSessionFactory.openSession(true);
    // 4.使用SqlSession对象执行映射文件中定义的sql,并返回映射结果
    // 4.1获取mapper接口对象
    UserMapper userMapper = session.getMapper(UserMapper.class);
    // 4.2测试功能
    int result = userMapper.insertUser();
    // 4.3提交事务
    //session.commit();
    // 4.4输出结果
    System.out.println("result="+result);
    //5.关闭SqlSession
    session.close();
}

5. log4j ログのレベルは
FATAL (致命的) > ERROR (エラー) > WARN (警告) > INFO (情報) > DEBUG (デバッグ) で、
左から右に情報が詳細に出力されます。
6.マッパーマッピングファイルの4つのインポート方法

<!-- 配置映射文件:用来配置sql语句和结果集类型等 -->
<!--1.使用类路径引入-->
<mappers>
    <mapper resource="com/jd/wds/mappers/ParameterMapper.xml"/>
</mappers>
<!--2.使用本地文件路径引入-->
<mappers>
    <mapper url="file:\\\E:\Spring\Mbatis\mybatis-demo02\src\main\resources\com\jd\wds\mappers\ParameterMapper.xml"/>
</mappers>
<!--3.使用接口类引入-->
<mappers>
    <mapper class="com.jd.wds.mappers.ParameterMapper"/>
</mappers>
<!--4.使用包名引入-->
<mappers>
    <package name="com.jd.wds.mappers"/>
</mappers>

2. Mybatis 開発手順

1.導​​入が必要な依存関係

<!-- mybatis依赖 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.0</version>
</dependency>
<!-- MySQL数据库依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>
<!--Junit单元测试依赖-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>
<!--log4j日志管理-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

2. クエリ関数のラベルは、resultType または resultMap に設定する必要があります。
resultType: デフォルトのマッピング関係を設定します (フィールド名と属性名は一貫しています)。
resultMap: カスタム マッピング関係を設定します (フィールド名と属性名は一貫していません。 1、1 対多のマッピング)
3 . ユーザー テーブル (UserMapper.xml) に対する追加、削除、変更、およびクエリ操作

<!--1.插入一条记录-->
<insert id="insertUser">
 insert into user values(null,"小王","男",17,"[email protected]")
</insert>
<!--2.删除一条记录-->
<delete id="deleteUser">
delete from user where id = #{id}
</delete>
<!--3.修改一条记录-->
<update id="updateUserById">
update user set name = "小张" where id = #{id}
</update>
<!--4.查询一条记录-->
<select id="findUserById" resultType="com.jd.wds.pojo.User" >
select * from user where id = #{id}
</select>
<!--5.查询所有记录-->
<select id="findAllUser" resultType="com.jd.wds.pojo.User">
select * from user
</select>

4. mybatis コア設定ファイル mybatis-config.xml の説明

<?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>
    <!-- 1.引入外部资源文件 -->
    <properties resource="jdbc.properties"></properties>
    <!-- 2.设置驼峰匹配 -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!-- 3.设置包扫描(别名) -->
    <typeAliases>
        <package name="cn.itcast.pojo"/>
    </typeAliases>
    <!-- 4.配置环境:可以配置多个环境,default:配置某一个环境的唯一标识,表示默认使用哪个环境 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!-- 配置连接信息 -->
                <property name="driver" value="${jdbc.driverClass}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 5.配置映射文件:用来配置sql语句和结果集类型等 -->
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

3. Mybatis は 2 つの方法でパラメータ値を取得します

Mybatis がパラメーター値を取得する方法は 2 つあります: #{} と$
{
}
#{} と ${} を介して任意の名前でパラメーター値を取得できます (${} は一重引用符を追加する必要があります)

<select id="findUserByName" resultType="com.jd.wds.pojo.User">
    select * from user where name = '${name}'
    <!--select * from user where name = #{name}-->
</select>

(2) マッパーインターフェースメソッドのパラメータが複数ある場合、
①0,1…をキーにしてパラメータを値とする
②param1,param2をキーにしてパラメータを値とする2通りの方法で格納するパラメータを値として使用します。
この時点では、{arg0} または {param1} のみを使用して値にアクセスします (${} は一重引用符を追加する必要があります)。

<select id="checkLogin" resultType="com.jd.wds.pojo.User">
    select * from user where username=#{0} and password=#{1}
    <!--select * from user where username='${param1}' and password='${param2}'-->
</select>

(3) マッパー インターフェース メソッドの複数のパラメーターがある場合、これらのパラメーターはマップ コレクションに手動で格納でき、#{} および ${} ( ${} を介してキーの形式で値にアクセスするだけで済みます。アポストロフィを追加する必要があります)

<select id="checkLoginByMap" resultType="com.jd.wds.pojo.User">
    <!--select * from user where username = #{username} and password = #{password}-->
    select * from user where username = '${username}' and password = '${password}'
</select>
@Test
public void checkLoginByMap(){
    
    
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    ParameterMapper parameterMapper = sqlSession.getMapper(ParameterMapper.class);
    Map<String, Object> hashMap = new HashMap<>();
    hashMap.put("username","小张");
    hashMap.put("password","2356");
    User user = parameterMapper.checkLoginByMap(hashMap);
    System.out.println(user);
}

(4) マッパー インターフェイス メソッドのパラメーターはエンティティ タイプのパラメーターであり、#{} または ${} を介して属性値にアクセスする必要があるだけです ( ${} は単一引用符で追加する必要があります)。

<insert id="insertUser" >
    <!--insert into user values(null,#{username},#{password},#{age},#{email})-->
    insert into user values(null,'${username}','${password}','${age}','${email}')
</insert>

(5) @Param アノテーションを使用してパラメータに名前を付ける このとき、mybatis はこれらのパラメータをマップ コレクションに入れ、次の 2 つの方法で格納します: ① @param アノテーションの値をキーとして、パラメータ
をvalue;
② Use param1, param2... がキー、パラメータが値;
このとき、{arg0} または {param1} を使用して値にアクセスするだけです ( ${} を で囲む必要があります)。一重引用符)

User checkLoginByParam(@Param("username")String username,@Param("password") String password);
<select id="checkLoginByParam" resultType="com.jd.wds.pojo.User">
    <!--select * from user where username = #{username} and password = #{password}-->
    select * from user where username = #{param1} and password = #{param2}
</select>

おすすめ

転載: blog.csdn.net/weixin_46081857/article/details/123286914