zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    老贴纪念九(蓝色 白色 绿色(前四天))
    进入6月
    老贴纪念七!(敏感:二十年了,而青春从来没有离开过)
    一个关于inet_ntoa的奇怪问题
    一个通用的Makefile模板
    【记录】find+tar命令组合
    Linux SDIO WIFI驱动的编译
    编译静态库和动态库的Makefile文件
    分解成连续数字的和
    linux nc命令示例
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6193278.html
Copyright © 2011-2022 走看看