MyBatis carga diferida (carga lenta)

MyBatis carga diferida (carga lenta)

La denominada carga diferida es una declaración cargada relativamente inmediata. Lazy carga: sólo para utilizar los datos (el objeto), consultará los datos de la base de datos.
 beneficios: evitar el acceso frecuente a la base de datos, lo que reduce la presión en la base de datos y ahorrar recursos.
 Contras: Debido a que sólo en el uso de los datos, será enviado a consultar la base de datos SQL, si hay grandes cantidades de necesidad de datos de consulta, porque la consulta en sí consumirá tiempo, haciendo que el usuario que esperar demasiado tiempo a la experiencia disminuyó.

Para demostrar a través de código

Toda la información mediante la consulta del personal de investigación para demostrar la carga diferida
para crear una clase de entidad empleados y departamentos, y el establecimiento de la relación de muchos a uno

EmployyeeMapper.xml empleados archivo de asignación

En el archivo de configuración global

<?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 archivo de asignación de sector

<?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>

Proceso: En la clase de prueba: métodos de interfaz de llamada findById EmployeeMapper, ejecutar consulta de selección para encontrar EmployeeMapper.xml por sqlMapConfig.xml archivo, pero el conjunto de resultados que contiene la información necesaria departamento resultMap para resolver el conjunto de resultados, análisis de referencias asociación de empleados DeptMapper.xml Identificación del departamento para seleccionar consulta en la información del sector. Conectado a los mismos resultados que la izquierda
(cuando no es necesario para consultar el personal del departamento de información, que ha habido retraso en la carga, la carga diferida está desactivada por defecto, se echa un vistazo a toda la información que el empleado no incluye la información del sector).

Configuración 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>

El primer aspecto puede ser un poco confuso, para ver el texto fuente más amarillo puede ser fácil de entender.

Publicado 68 artículos originales · ganado elogios 7 · vistas 2527

Supongo que te gusta

Origin blog.csdn.net/Cui6023056/article/details/104414278
Recomendado
Clasificación