【mybatis 】懒加载配置 技能 get

参考资料:https://blog.csdn.net/tototuzuoquan/article/details/42915891

需求查订单信息和对应的用户信息。

第一步:xml的懒加载要求的写法,我们先写order的sql,因为是模型里面有模型,所以用association标签,association标签里直接写查询user信息的findUserById方法,那么需要提供的Id参数(column)就在order的resultMap里找就行了。

 

复制代码
 <!--  ============= 懒加载 ==================-->
    <resultMap id="orderLazyloadingRslMap" type="orders">
        <id column="id" property="id"/>
        <result column="note" property="note"/>
        <result column="number" property="number"/>
        <result column="createtime" property="createtime"/>

        <!--配置查询-->
        <association property="user" select="com.gyf.mapper.UserMapper.findUserById" column="user_id"/>
    </resultMap>
    <select id="findOrderAndUserByLazyloading" resultMap="orderLazyloadingRslMap">
        SELECT * FROM orders
    </select>
复制代码

 

第二步:mybatis默认是关闭懒加载的,需要我们在配置文件开启下。

<!--配置允许懒加载-->
    <settings>
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>

 

 

贴心 ~ 附完整配置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 resource="db.properties"/>

    <!--配置允许懒加载-->
    <settings>
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>
    <!--配置别名-->
    <typeAliases>
        <!--<typeAlias type="com.gyf.model.User" alias="user"></typeAlias>-->

        <!--指定包名,别名就是类名,第一个小写 User 别名就是user-->
        <package name="com.gyf.model"></package>
        <package name="com.gyf.vo"></package>
    </typeAliases>

    <!-- 配置mybatis的环境信息 -->
    <environments default="development">
        <environment id="development">
            <!-- 配置JDBC事务控制,由mybatis进行管理 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源,采用dbcp连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driverClass}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${name}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--告诉mybatis加载映射文件-->
    <mappers>
        <!--<mapper resource="com/gyf/sqlmap/User.xml"></mapper>-->

        <!--第一种:写映射文件的名字-->
        <!--<mapper resource="com/gyf/mapper/UserMapper.xml"></mapper>-->

        <!--第二种:写类名,一定要有个映射文件与之对应
        如果没有,那么在UserMapper要声明注解-->
        <!--<mapper class="com.gyf.mapper.UserMapper"></mapper>-->

        <!--第三种:可以写包名-->
        <package name="com.gyf.mapper"></package>

    </mappers>
</configuration>
复制代码

 

posted @   expworld  阅读(186)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示