Mybatis中 SQL语句复用

发布时间 - 2026-01-11 00:08:59    点击率:

mapper.xml 中共用

mapper.xml 间共用

项目中也许我们会遇到一段sql语句被多个查询、增加等语句用到的情况,如何去偷懒呢,复用sql无疑是较好的选择

这里只提供简单的示范:

如果只是单表查询,并且希望共用的sql只会出现在同一个mapper.xml文件中,那么我们可以直接在

<mapper namespace="XXXXX"></mapper>

中写下面的业务代码

<sql id="unitSql">
    a.userId,a.legalCode,legalName,
    bidderCodeType,legalRole,
    licenseNo,DATE_FORMAT(licenseEndDate,"%Y-%m-%d") AS licenseEndDate,
    taxCertNo,DATE_FORMAT(taxCertEndDate,"%Y-%m-%d") AS taxCertEndDate,
    localTaxCertNo,DATE_FORMAT(localTaxCertEndDate,"%Y-%m-%d") AS localTaxCertEndDate,
    organNo,DATE_FORMAT(organCertEndDate,"%Y-%m-%d") AS organCertEndDate,
    legalRepresent,legalType,
    perresentPhone,legalIndustary,creditRate,
    countryRegion,legalUnitAddress,regionCode,registerProvince,
    a.regCapital,a.regCapCurRency,a.regUnit,
    registerCity,registerCounty,basicBank,basicBranchBank,
    basicAccountNo,basicAccountName,legalContact,legalContactPhone,
    legalContactAddress,legalWeb,legalZipCode,legalEmail,
    legalStatus
</sql>

然后引用

<select id="getTenderAgentById" parameterType="String" resultType="Map">
    select <include refid="unitSql"/>, -- 就是这句话引用 ,refid为共有sql语句id
    b.auditOpinion,b.createUser,
    b.createTime,
    b.lastUpdateUser,
    b.lastUpdateTime,
    b.disabled,b.infoStatus
    from P_legalUnit a, P_tenderAgent b
    where b.userId=#{userId} AND a.userId = b.userId AND b.disabled='0'
</select>

如果是连表查询,那么我们极有可能会希望有一个sql语句被多个mapper.xml引用的的方法,很简单。
我们可以新建一个mapper.xml文件(当然,这个mapper.xml要在你的扫描路径下,本文不赘述)。取名为common.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="common">
  <sql id="common.unitSql">
    a.userId,a.legalCode,legalName,
    bidderCodeType,legalRole,
    licenseNo,DATE_FORMAT(licenseEndDate,"%Y-%m-%d") AS licenseEndDate,
    taxCertNo,DATE_FORMAT(taxCertEndDate,"%Y-%m-%d") AS taxCertEndDate,
    localTaxCertNo,DATE_FORMAT(localTaxCertEndDate,"%Y-%m-%d") AS localTaxCertEndDate,
    organNo,DATE_FORMAT(organCertEndDate,"%Y-%m-%d") AS organCertEndDate,
    legalRepresent,legalType,
    perresentPhone,legalIndustary,creditRate,
    countryRegion,legalUnitAddress,regionCode,registerProvince,
    a.regCapital,a.regCapCurRency,a.regUnit,
    registerCity,registerCounty,basicBank,basicBranchBank,
    basicAccountNo,basicAccountName,legalContact,legalContactPhone,
    legalContactAddress,legalWeb,legalZipCode,legalEmail,
    legalStatus
  </sql>
</mappper>

在另一个mapper.xml文件引用

<select id="getTenderAgentById" parameterType="String" resultType="Map">
    select <include refid="common.unitSql"/>, -- 就是这句话引用 ,refid为共有sql语句id
    b.auditOpinion,b.createUser,
    b.createTime,
    b.lastUpdateUser,
    b.lastUpdateTime,
    b.disabled,b.infoStatus
    from P_legalUnit a, P_tenderAgent b
    where b.userId=#{userId} AND a.userId = b.userId AND b.disabled='0'
</select>

==注:为何我的文件名要取为common.xml并且id也为common.unitSql呢?这是为了后期维护方便,如此,可以更容易找到该共有的sql在哪一个文件==

以上所述是小编给大家介绍的Mybatis中 SQL语句复用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# mybatis  # sql复用  # Mybatis控制台打印Sql语句的实现代码  # MyBatis 执行动态 SQL语句详解  # 详解Java的MyBatis框架中SQL语句映射部分的编写  # Oracle在Mybatis中SQL语句的配置方法  # Mybatis基于注解形式的sql语句生成实例代码  # mybatis教程之动态sql语句_动力节点Java学院整理  # 详解MyBatis直接执行SQL查询及数据批量插入  # mybatis执行批量更新batch update 的方法(oracle  # mysql两种)  # Mybatis 中的sql批量修改方法实现  # 如何批量测试Mybatis项目中的Sql是否正确详解  # 多个  # 这句话  # 我们可以  # 小编  # 复用  # 这是  # 在此  # 出现在  # 要在  # 只会  # 较好  # 给大家  # 很简单  # 也为  # 更容易  # 只提供  # 所述  # 该文件  # 给我留言  # 感谢大家 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速搭建支持数据库操作的智能建站平台?  简历没回改:利用AI润色让你的文字更专业  jquery插件bootstrapValidator表单验证详解  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  教你用AI润色文章,让你的文字表达更专业  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Android Socket接口实现即时通讯实例代码  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何在香港免费服务器上快速搭建网站?  Laravel如何记录自定义日志?(Log频道配置)  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  香港服务器网站推广:SEO优化与外贸独立站搭建策略  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  如何用美橙互联一键搭建多站合一网站?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Laravel如何使用Vite进行前端资源打包?(配置示例)  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何用VPS主机快速搭建个人网站?  香港服务器租用费用高吗?如何避免常见误区?  Laravel Session怎么存储_Laravel Session驱动配置详解  如何在VPS电脑上快速搭建网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  焦点电影公司作品,电影焦点结局是什么?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Laravel安装步骤详细教程_Laravel环境搭建指南  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  怎样使用JSON进行数据交换_它有什么限制  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  如何在新浪SAE免费搭建个人博客?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  如何在Windows服务器上快速搭建网站?  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  javascript日期怎么处理_如何格式化输出  WEB开发之注册页面验证码倒计时代码的实现  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  创业网站制作流程,创业网站可靠吗?