1.レベル1とレベル2のキャッシュ(レベル2が推奨、レベル1はデフォルトで有効、レベル2は構成)
2次キャッシュをオンにする方法は、3つのステップに分かれています。
1つは、構成ファイルで開くことです。これは、2次キャッシュを開くメインスイッチです。デフォルトは開いています。
<setting name = "cacheEnabled" value = "true" />
2つ目は、マッパーファイルのキャッシュを有効にする方法で、デフォルトでは無効になっています。手動で有効にする必要があります。
<!-Mapperファイルごとに1つのキャッシュオブジェクトを使用->
<cache />
<!-複数のMapperファイルがキャッシュオブジェクトを共有する場合->
<cache-ref />
3つ目は、クエリを実行するステートメントにキャッシュを使用することです。つまり、<select>ノードで次の属性を構成します。
useCache = "true"
二次キャッシュには次の指示があります。
- マッピングステートメントファイル内のすべての選択ステートメントがキャッシュされます。
- マッピングステートメントファイル内のすべての挿入、更新、削除ステートメントは、キャッシュを更新します。
- キャッシュは、最近使用されていない(LRU)アルゴリズムを使用して回復されます。
- スケジュール(フラッシュ間隔なし、更新間隔なしなど)に従って、キャッシュは発生順に更新されません。
- キャッシュには、リストのコレクションまたはオブジェクトへの1024の参照が格納されます(queryメソッドが返すものに関係なく)。
- キャッシュは読み取り/書き込みキャッシュと見なされます。つまり、オブジェクトの取得は共有されず、他の呼び出し元やスレッドによる潜在的な変更を妨げることなく、呼び出し元が安全に変更できます。
2.エイリアスを取得するデフォルトは小文字のクラスの名前です
3。
4.結果マップのマッピング
resultMap>要素の使用例:
1.新しいデータテーブルt_userを作成し、テストデータを挿入します
use mybatis
create table t_user(
t_id int identity(1,1) PRIMARY key, t_name varchar(50), t_age int ) insert into t_user values ('lulu','23'); insert into t_user values ('lili','25'); insert into t_user values ('jiji','18');
2.新しい永続クラスUserを作成し、属性を定義します。
/**
* @author mz
* @version V1.0
* @Description: 用户实体类
* @create 2017-11-01 14:13 */ public class User { private Integer id; private String name; private Integer age; //省略setter和getter方法 }
3. UserMapper.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="com.itheima.mapper.UserMapper"> <resultMap id="resultMap" type="com.itheima.po.User"> <!--<id>和<result>的property属性表示User类的属性名,column属性表示数据表t_user的列名。--> <id property="id" column="t_id"/> <result property="name" column="t_name"/> <result property="age" column="t_age"/> </resultMap> <select id="findAllUser" resultMap="resultMap"> <!--<select>元素的resultMap属性表示引用上面定义的resultMap--> select * from t_user </select> </mapper>
4.構成ファイルmybatis-configで、UserMapper.xmlを紹介し、テストメソッドを記述します。
<!--配置mapper的位置-->
<mappers>
<mapper resource="com/itheima/mapper/CustomerMapper.xml"/> <mapper resource="com/itheima/mapper/UserMapper.xml"/> </mappers>
@Test
public void findAllUserTest() { //获取SqlSession SqlSession sqlSession = MybatisUtils.getSession(); //执行映射文件中定义的SQL,并返回结果 List<User> list = sqlSession.selectList("com.itheima.mapper.UserMapper.findAllUser"); for (User user : list) { System.out.println(user); } //关闭SqlSession sqlSession.close(); }
代わりに次の方法を使用することもできます