Mybatis 学習ノート 1 Mybatis_biubiubiu0706 のブログの概要 - CSDN ブログ
Mybatisをカプセル化する
SqlSessionUtil ツール クラス
package com.example.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
/**
* @author hrui
* @date 2023/9/8 14:55
*/
public class SqlSessionUtil {
//工具类的构造方法一般都是私有化
//方法都是静态的
//为了防止new对象,构造方法私有化
private SqlSessionUtil(){
}
private static SqlSessionFactory sqlSessionFactory;
//类加载时候执行
//SqlSessionUtil工具类在被加载的时候,解析mybatis-config1.xml.创建sqlSessionFactory对象
static{
try {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
//一个sqlSessionFactory对应一个数据库
sqlSessionFactory= sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config1.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
//获取会话对象 返回会话对象
public static SqlSession openSession(){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
これによりテストがより便利になります
新しいモジュール mybatis-02-crud を作成する
メイブンプロジェクト
依存関係を導入する
<!--引入mybatis依赖和mysql依赖-->
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!--引入logback依赖-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
ツールクラスとmybatis-config1.xml、logback.xml(ログ設定ファイル)、xxxMapper.xmlをコピーします。
以下のような書き方は実際の開発には存在せず、値はハードコーディングされています。
渡されるオブジェクトはデータをカプセル化し、SQL 内の #{xxx} とのマッピング関係を形成します。
Map でカプセル化してみてください。#{} に Map コレクションのキーを記述します。キーが存在しない場合はどうなりますか? #{key doesn't present} は null 値になります。
正常に挿入されました
一般的には、キーを対応関係として使用します。
上記はMapを介して値を渡すことです
以下は、POJO クラスで渡される値を通じて、set get、パラメーターなし、完全なパラメーター、toString と等しい hashCode を提供します。
このとき #{} は POJO の属性名です(厳密には get メソッド後に XXX を小文字に変換しているのではないでしょうか?大文字と小文字を無視してマッピング関係を形成していると思います。属性名を書き間違えると Map が挿入してしまいます) null ですが、pojo その場合、エラーが報告され、「クラス xxxxxxxx には 'xxxx' という名前のプロパティのゲッターがありません」というメッセージが表示されます。
属性の get メソッドが見つからないというエラーが報告されました。
削除操作を完了する
定数値を直接渡す場合 #{何でも書けます}
アップデート操作を完了する
クエリ チェック 1
下の図の ID が間違っています。
ここで、クエリ時にコミットする必要がないことに注意してください。
解決
1. エイリアスを追加する
2.結果マップを使用する
3. キャメルケース識別子を使用するように設定します
1. エイリアス メソッドを追加します。
2.結果マップを使用する
3. キャメルケースを使用する
mybatisコア設定ファイル内
.XML
テスト
すべてを選択して検索
マッピングファイルにおけるネームスペースの役割について
当初、上記のテストには xxxMapper.xml マッピング ファイルが 1 つだけありました。
2 つの .XML マッピング ファイルがあり、それらの ID が同じである場合
このままでは何かがうまくいかなくなる
テスト
この状況では
Mybatis コア構成ファイルのマルチ環境構成
Mybatisコア設定ファイルでのトランザクション管理について
DataSource について------>DataSource は JDK の仕様で、データベース接続を簡単に行うことができます。
さまざまなタイプの DataSource でのさまざまなプロパティ
JNDI の役割: Mybatis にコンテナの接続プールを使用させる コンテナは JNDI 仕様を実装します。
データ ソース タイプについて UNPOOLED --> データベース接続プールには適用されません --> 毎回新しい Connection オブジェクトを作成します
および POOLED---->Mybatis 自体によって実装されたデータベース接続プールを使用します
上記のライトに関する具体的な違いは何ですか?
ローカルデータベースに新しいライブラリとテーブルを作成する
コア構成ファイル デフォルトのデータベースは接続プーリングを使用します。接続プーリングはローカルでは適用できません。具体的な違いを参照してください。
テストで接続プールを使用する場合、接続オブジェクトは再利用されます。
接続プールを使用せずに別のデータベースをテストする
データベース接続プールに関するいくつかの構成
接続が枯渇するとどうなりますか???????
20 秒間待機し、20 秒後、接続の実行を強制的に継続します。
無料上限数について
コア構成ファイルの preoperties タグについて
プロパティの別の使用法
プロパティを記述する方法は他にもありますが、URLを記述する方法も可能です。