欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Mybatis中 SQL语句复用

时间:2021-03-10 09:27:19|栏目:JAVA代码|点击:

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在哪一个文件==

上一篇:Java中文件管理系统FastDFS详解

栏    目:JAVA代码

下一篇:实例讲解JAVA 适配器模式

本文标题:Mybatis中 SQL语句复用

本文地址:http://www.codeinn.net/misctech/78151.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有