当前位置: 首页 > news >正文

mapper.xml中的<include>是什么

目录

基本用法

核心优势

注意事项

典型场景


在 MyBatis 的 mapper.xml 文件中,<include> 标签用于引用可复用的 SQL 代码片段,通常与 <sql> 标签配合使用。它的核心作用是减少重复代码,提高 SQL 的可维护性。


基本用法

  1. 定义 SQL 片段
    使用 <sql> 标签定义一个可复用的 SQL 片段,并为其指定唯一 id

     

    xml

    <sql id="userColumns">
    id, username, email, create_time
    </sql>
  2. 通过 <include> 引用片段
    在需要的地方通过 <include> 标签引用该片段:

     

    xml

    <select id="selectUsers" resultType="User">
    SELECT
    <include refid="userColumns"/>
    FROM users
    WHERE status = 1
    </select>

核心优势

  1. 代码复用
    避免在多个 SQL 语句中重复编写相同的列名、条件或复杂逻辑。

  2. 统一维护
    修改 <sql> 片段后,所有引用该片段的 SQL 会自动生效,无需逐个修改。

  3. 动态参数支持
    可以结合 <property> 标签传递参数,实现动态 SQL 片段:

     

    xml

    <sql id="dynamicWhere">
    WHERE status = #{status}
    <if test="name != null">
    AND name LIKE #{name}
    </if>
    </sql>
    <select id="selectByCondition" resultType="User">
    SELECT * FROM users
    <include refid="dynamicWhere">
    <property name="status" value="1"/>
    <property name="name" value="John"/>
    </include>
    </select>

注意事项

  1. 作用域限制
    默认只能引用同一文件中定义的 <sql> 片段。若需跨文件引用,需通过命名空间(namespace)指定:

    xml

    <include refid="com.example.mapper.UserMapper.userColumns"/>
  2. 避免循环引用
    确保 <sql> 片段之间没有相互引用,否则会导致解析错误。

  3. 优先级规则
    如果 <include> 中定义了 <property>,会覆盖外部传入的同名参数。


典型场景

  • 复用列名
    多个查询需要返回相同字段时,定义列名片段。
  • 统一条件逻辑
    如分页参数、软删除条件(status=1)等。
  • 动态拼接 SQL
    结合 <if><foreach> 等标签实现条件分支。

通过合理使用 <include>,可以显著提升 MyBatis 映射文件的简洁性和可维护性。

http://www.lryc.cn/news/605785.html

相关文章:

  • 摄像头模块的调焦原理
  • uni-app用css编写族谱树家谱树
  • 量子安全:微算法科技(MLGO)基于比特币的非对称共识链算法引领数字经济未来
  • 本地通信的选择:为什么组播比广播更适合多进程协作?
  • NAS、DAS、SAN三种存储介绍
  • [12月考试] E
  • 计算机网络学习--------三次握手与四次挥手
  • 深度学习G5周:Pix2Pix理论与实战
  • docker运行时目录/var/lib/docker 学习
  • npm从入门到精通一篇全
  • 蚂蚁财富招Java高级研发
  • java笔记——ConcurrentLinkedQueue
  • LangGraph底层原理与基础应用入门
  • Visual Studio调试技巧与函数递归详解
  • ADW300 物联网仪表:引领能源计量智能化变革
  • 电力系统功率与同步发电机运行特性详解
  • Qwen3-30B-A3B-Thinking-2507 推理模型深度评测
  • 【笔记】热力学定律推导(6)热力学第二定律推导
  • LaTeX 表格制作全面指南
  • 开发指南126-参数管理
  • C++:结构体(Structure)
  • 2025虚幻5光明之魂开发思考1——借鉴软件工程
  • React Filber及核心原理
  • 以AI大模型重构教育新生态,打造“教-学-练-辅-评”一体化智能平台
  • 澳交所技术重构窗口开启,中资科技企业如何破局?——从ASX清算系统转型看跨境金融基础设施的赋能路径
  • matlab - 算4个数的加减法
  • [mind-elixir]Mind-Elixir 的交互增强:单击、双击与鼠标 Hover 功能实现
  • 协同测试总结(电台/WIFI/ID/固定端口设置和开机自启)
  • CentOS 6.10 上安装 GCC 7+
  • PHP 与 MySQL 详解实战入门(1)