MyBatisの遅延ロード(遅延ロード)
いわゆる遅延ローディングは、比較的すぐにロードされた文です。遅延ロード:のみデータ(オブジェクト)を使用する、データベースからのデータを照会します。
メリット:データベース上と資源の保存の圧力を下げる、データベースへの頻繁なアクセスを避けます。
短所:データのみを使用することで、クエリへのデータの必要性の大量がある場合、クエリ自体が時間を消費しますので、ユーザーがあまりにも長い経験が減少するのを待つために引き起こし、、、データベースのSQLを照会するために送信されますので。
コードを実証するために、
遅延ロードを証明するために、問い合わせのスタッフを照会することによって、すべての情報
エンティティクラスの従業員と部署を作成するために、1人の関係に多くの確立
従業員マッピングファイルEmployyeeMapper.xml
メインの設定ファイルで
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace:命名空间,用于指定当前mapper文件中操作的SQL属于哪一个接口类下面的方法-->
<mapper namespace="com.hp.mybatis.mapper.EmployeeMapper">
<resultMap id="base_map" type="employee">
<id property="id" column="id"></id>
<result property="name" column="name"></result>
<!--建立和部门关系-->
<association property="dept" javaType="dept" column="dept_id"
select="com.hp.mybatis.mapper.DeptMapper.findById"></association>
</resultMap>
<!--根据id查询员工,级联查询部门
不使用左外链接,因为左外链接不会出现延迟加载情况
-->
<select id="findById" parameterType="int" resultMap="base_map">
select id,dept_id,name from employee where id = #{emId}
</select>
</mapper>
セクターマッピングファイルDeptMapper.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace:命名空间,用于指定当前mapper文件中操作的SQL属于哪一个接口类下面的方法-->
<mapper namespace="com.hp.mybatis.mapper.DeptMapper">
<select id="findById" parameterType="int" resultType="dept">
select * from dept where id = #{id}
</select>
</mapper>
プロセス:EmployeeMapperコールfindByIdインタフェース・メソッド、sqlMapConfig.xmlファイルによってEmployeeMapper.xmlを見つけるために、選択クエリを実行しますが、情報を含む結果セットを連想参照の従業員を解析し、結果セットを解決するために、このresultMap部門を必要:テストクラスでDeptMapper.xml部門IDは、セクタ情報にクエリを選択します。左と同じ結果に接続されている
(私たちは、情報部門のスタッフを照会する必要がない場合、負荷の遅れがあったことを、遅延ロードは、デフォルトでは無効になって、従業員がセクタ情報が含まれていないこと、すべての情報をチェックアウトします)。
sqlMapConfig.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>
<!--配置properties读取外部文件,注意:上下顺序-->
<properties resource="com/db.properties"></properties>//数据库配置
<!--配置开启延迟加载-->
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="lazyLoadTriggerMethods" value="clone"/>
</settings>
<!--别名配置-->
<typeAliases>
<!--指定包名,指定后,别名默认就是包下的类名-->
<package name="com.hp.mybatis.bean"/>
</typeAliases>
<!--配置环境-->
<environments default="abc">
<!--环境中定义了,要访问的数据库连接池,事务管理类型-->
<environment id="abc">
<transactionManager type="JDBC"></transactionManager>
<!--数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="${db.driverName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--当前包需要和mapper接口类所在包同名,并且当前包需要一级一级创建-->
<package name="com.hp.mybatis.mapper"/>
</mappers>
</configuration>
最初の外観は少しはより黄色のフォントテキストを理解することが簡単になる見て、混同されることがあります。