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辅助功能视觉效果设置
创业网站制作流程,创业网站可靠吗?

