mybatis公用代码抽取到单独的mapper.xml文件

同任何的代码库一样,在mapper中,通常也会有一些公共的sql代码段会被很多业务mapper.xml引用到,比如最常用的可能是分页和数据权限过滤了,尤其是在oracle中的分页语法。为了减少骨架性代码,通常将它们抽象到sql中,但是肯定又不能在每个mapper中也包含,这样就没有意义了。此时,可以将这部分移到专门的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.pagingStart">
</
sql> <sql id="Common.pagingEnd"> <![CDATA[ limit #{startWith,jdbcType=INTEGER},#{rows,jdbcType=INTEGER} ]]> </sql> </mapper>
复制代码

 

然后在具体的mapper.xml可以通过namespace进行引用,如下:

复制代码
    <select id="queryPage" resultMap="clientPage" parameterType="java.util.Map">
        <include refid="Common.pagingStart"/>
        <include refid="commonSelect"/>
            <!-- 这里有个额外的1是为了避免额外处理最后一个”,“ -->
            1
        <include refid="commonFrom"/>
        <include refid="commonWhere"/>
          <if test="clientId != null" >
            and CLIENT_ID = #{clientId,jdbcType=VARCHAR}
          </if>
          <if test="clientName != null" >
            and CLIENT_NAME like '%${clientName}'
          </if>
          <if test="telephone != null" >
            and TELEPHONE = #{telephone,jdbcType=VARCHAR}
          </if>
        order by client_id
        <include refid="Common.pagingEnd"/>
    </select>
复制代码

 

posted @   zhjh256  阅读(7072)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示