【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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?