Mybatis의 SQL 문장 재사용

3995 단어 mybatissql복용
mapper.xml에서 공용
mapper.xml 간 공용
프로젝트 중 아마도 우리는 sql 문장이 여러 개의 조회, 증가 등 문장에 사용되는 상황을 만나게 될 것이다. 어떻게 게으름을 피우는가. sql 복용은 의심할 여지없이 좋은 선택이다
여기에는 간단한 시범만 제공된다.
만약 단일 테이블 조회일 뿐, 공용을 원하는 sql는 같은 마퍼에만 나타날 것입니다.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>
만약 연표 조회라면, 우리는 ql 문장이 여러 개의 마퍼에 의해 사용되기를 희망할 가능성이 매우 높다.xml 인용 방법은 간단합니다.
우리는 마퍼를 새로 만들 수 있다.xml 파일 (물론, 이 mapper.xml은 당신의 스캐닝 경로에서 설명할 필요가 없습니다.공통으로 이름을 짓다.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>
다른 마퍼에서.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도 일반적입니다.유닛 Sql은요?이것은 후기 유지보수의 편의를 위해서입니다. 이렇게 하면 공유된 sql가 어느 파일에 있는지 쉽게 찾을 수 있습니다==
위에서 말한 것은 편집자가 여러분께 소개한 Mybatis의 SQL 문장 복용입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기