springboot中如何引入其他xml文件中的sql

在编写sql语句提取公共部分,以下是一个xml中的情况
模糊查询很常用,提取出来供其他sql使用
< sql id=“xxx”> < /sql>

 <!-- 通过sql元素对sql映射中的共性进行提取 -->
     <sql id="queryWhereId">
          from sys_logs
          <where>
            <if test="username!=null and username!=''">
              username like concat("%",#{
     username},"%")
            </if>
          </where>
     </sql>

     <!-- 基于条件进行分页查询 -->
     <select id="findPageObjects"
             resultType="com.cy.pj.sys.entity.SysLog">
           select *
           <include refid="queryWhereId"/>
           order by createdTime desc
     </select>

那么以上可以进一步提取公共sql语句,可以是全局的xml引入,方便使用
第一步,提取
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="Mapper">
    <sql id="queryWhereId">
        <where>
            <if test="username!=null and username!=''">
                username like concat("%",#{
     username},"%")
            </if>
        </where>
    </sql>
</mapper>

第二步,使用
SysUserMapper.xml

 <!-- 基于条件进行分页查询 -->
     <select id="findPageObjects"
             resultMap="sysUserDeptVo">
           select * from sys_users
           <include refid="Mapper.queryWhereId"/>
           order by createdTime desc
     </select>

也是有坑的,公共的xml必须有namespace,引入的时候需要 namespace.方法名
将 from sys_users 放入哪里其实都可以,但是为了更好复用放入本来的地方,但是放入公共部分对执行效率影响是积极的

你可能感兴趣的:(java,java)