mybatis引用其他文件中的sql片段的实现

 更新时间:2024年03月17日 11:02:31   作者:小王和八蛋  
Mybatis中也是支持引用其他Mapper文件中的SQL片段的,本文就来介绍一下如何使用,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧

前言

有一些通用的sql,在整个项目中都有可能使用的到, 但是我不太想定义java接口,结合着java逻辑来实现功能, 又或者在每一处的mapper.xml内都定义sql片段, 那么如果需要调整sql,我就需要调整好多处相同的代码. 如何后期维护方便,则需要单独创建一个mapper.xml文件, 只用来存放这些sql片段,没有接口的定于,接着业务中需要用到该sql片段的地方,就去引用这个外部的sql 片段即可.

实例

全局的mapper.xml

由于我们只有sql 片段,不需要映射Dao层接口, 所以namespase可以自定义

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="commonSQL">
    <sql id="SQL1">
        select * from 表名 where id = #{id}
    </sql>

    <sql id="SQL2">
        <!--注意再当前页面引用sql 片段不能直接写SQL1, 要namespase + sqlid 才可以,否则会报错-->
        <include refid="commonSQL.SQL1"/>
    </sql>
</mapper>

业务mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.xxx.xxxMapperDao">
    <select id="querySQL1" resultType="java.util.HashMap" parameterType="java.util.HashMap">
        select * from (
         <include refid="commonSQL.SQL1"/>
        )
    </select>

<select id="querySQL2" resultType="java.util.HashMap" parameterType="java.util.HashMap">
        select * from 表名 a
        left join (
         <include refid="commonSQL.SQL1">
            <!-- 如果有参数和sql片段映射不上,可以通过property 重新定义一下变量名称即可-->
            <property name="id" value="#{ID}">
        </include>
        ) b
        on a.id = b.id
    </select>
</mapper>

到此这篇关于mybatis引用其他文件中的sql片段的实现的文章就介绍到这了,更多相关mybatis引用其他文件sql片段内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • idea2017建立jsp工程及tomcat配置教程

    idea2017建立jsp工程及tomcat配置教程

    本文通过图文并茂的形式给大家介绍了idea2017建立jsp工程及tomcat等配置的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 详细Java批量获取微信公众号方法

    详细Java批量获取微信公众号方法

    本篇文章给大家讲解了用JAVA如何实现向爬虫一样获取微信公众号和其基本信息等,需要你正巧需要,那跟着学习参考下吧。
    2017-12-12
  • Java实现转换图片格式的示例代码

    Java实现转换图片格式的示例代码

    在日常的软件开发中,处理图像文件是一项常见任务,这篇文章将实现实现一个简单的Java程序,用于将一种图片格式转换为另一种格式,需要的可以了解下
    2025-02-02
  • 基于Java制作一个好玩的打飞机游戏

    基于Java制作一个好玩的打飞机游戏

    这篇文章主要介绍了基于Java制作的打飞机小游戏,这里整理了详细的代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Java 中限制方法的返回时间最新方法

    Java 中限制方法的返回时间最新方法

    最近在研究 ChatGPT 的 API 调用,因为 ChatGPT 的 API 调用时间通常超过 30 秒,所以我们希望在程序中限制这个方法的执行时间,不要让方法花太长时间去执行了,今天通过本文给大家分享Java 中如何限制方法的返回时间,感兴趣的朋友跟随小编一起看看吧
    2023-05-05
  • Java中LinkedHashMap的实现详解

    Java中LinkedHashMap的实现详解

    LinkedHashMap是Java中的一个Map容器,它继承自HashMap,并且还可以对元素进行有序存储,本文将介绍LinkedHashMap的实现原理以及使用方法,并且提供相应的测试用例和全文小结,需要的可以参考下
    2023-09-09
  • java接口Array介绍

    java接口Array介绍

    这篇文章主要介绍了java接口Array的相关资料,需要的朋友可以参考下
    2014-10-10
  • JFinal极速开发框架使用笔记分享

    JFinal极速开发框架使用笔记分享

    下面小编就为大家分享一篇JFinal极速开发框架使用笔记,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • SpringBoot之QueryDsl嵌套子查询问题

    SpringBoot之QueryDsl嵌套子查询问题

    这篇文章主要介绍了SpringBoot之QueryDsl嵌套子查询问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringBoot使用Dubbo的全过程(直连模式)

    SpringBoot使用Dubbo的全过程(直连模式)

    这篇文章给大家介绍SpringBoot使用Dubbo的全过程(直连模式),本文结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2026-05-05

最新评论