mybatis多表關聯(二)mapper文件寫法

今天寫多表關聯寫法:要使用到了mybatis的多表關聯查詢。spring

附表:營業執照表服務器

CREATE TABLE `vfc_lp_busi_license_info` (
`SCC` varchar(64) NOT NULL COMMENT '統一社會信用代碼',
`ENT_TYPE` varchar(10) NOT NULL COMMENT '企業類型',
`LEGAL_REPRESENTATIVE` varchar(10) NOT NULL COMMENT '發人表明',
`ID_TYPE` varchar(10) NOT NULL COMMENT ' 證件類型',
`ID_No` varchar(30) NOT NULL COMMENT '證件號碼',
`BUSINESS_TERM_BEGIN` datetime NOT NULL COMMENT '營業期限起始時間',
`BUSINESS_TERM_END` datetime NOT NULL COMMENT '營業期限結束時間',
`REG_ADDRess` varchar(60) NOT NULL COMMENT '註冊地址',
`REG_MONEY` varchar(10) NOT NULL COMMENT '註冊資本幣種',
`REGISTERFUNDS` decimal(16,2) NOT NULL COMMENT '註冊資本金額',
`REGISTER_OFFICE` varchar(60) NOT NULL COMMENT '註冊登記機關',
`BUSINESS_SCOPE` varchar(1024) NOT NULL COMMENT '經營範圍',
`lp_no` varchar(64) DEFAULT NULL COMMENT '法人編號',
`ent_no` varchar(64) DEFAULT NULL COMMENT '企業ID',
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '建立時間',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
`create_instance` varchar(8) DEFAULT NULL COMMENT '建立服務器',
`update_instance` varchar(8) DEFAULT NULL COMMENT '修改服務器',
`reg_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '註冊時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='營業執照信息表';

主表:法人基本信息表mybatis

CREATE TABLE `vfc_lp_base_info` (
`lp_no` varchar(64) NOT NULL COMMENT '法人編號',
`lp_name` varchar(64) NOT NULL COMMENT '法人名稱',
`lp_classify` varchar(10) NOT NULL COMMENT '法人基本分類',
`ENGLISH_NAME` varchar(30) DEFAULT NULL COMMENT '英文名稱',
`ENTERPRISE_SIZE` varchar(10) NOT NULL COMMENT '企業規模',
`LISTED_COMPANY_LOGO` varchar(6) NOT NULL COMMENT '上市公司標識',
`COUNTRY` varchar(30) NOT NULL COMMENT '所在國家',
`PROV` varchar(30) NOT NULL COMMENT '所在省',
`CITY` varchar(30) NOT NULL COMMENT '所在城市',
`INDUSTRY` varchar(64) DEFAULT NULL COMMENT '所屬行業',
`OPEN_MARKET_RATING` varchar(64) DEFAULT NULL COMMENT '公開市場評級',
`WEB_SITE` varchar(255) DEFAULT NULL COMMENT '公司網站',
`created_by` varchar(30) NOT NULL COMMENT '主辦人',
`ent_no` varchar(64) DEFAULT NULL COMMENT '所屬企業',
`BP_ID` varchar(64) DEFAULT NULL COMMENT '合做夥伴ID',
`beginVersion` int(30) NOT NULL COMMENT '起始版本號',
`endVersion` int(30) NOT NULL COMMENT '終止版本號',
`id_type` varchar(16) DEFAULT NULL COMMENT '證件類型',
`id_no` varchar(64) DEFAULT NULL COMMENT '證件號碼',
`lp_type` varchar(16) DEFAULT NULL COMMENT '法人類型',
`register_address` varchar(255) DEFAULT NULL COMMENT '註冊地址',
`reg_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '登記時間 審覈經過時間',
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '建立時間',
`updated_by` varchar(32) DEFAULT NULL COMMENT '修改人',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
`coordinator` varchar(32) DEFAULT NULL COMMENT '協辦人',
`created_office` varchar(16) DEFAULT NULL COMMENT '建立機構',
`valid_flag` varchar(3) DEFAULT NULL COMMENT '有效標識 0-失效,1-有效,僅實體數據必須',
`create_instance` varchar(8) DEFAULT NULL COMMENT '建立服務器',
`update_instance` varchar(8) DEFAULT NULL COMMENT '修改服務器',
PRIMARY KEY (`lp_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='法人基本信息';

主表和附表關聯關係:是根據主表的lp_No法人編號 跟附表中相互關聯一對一的關係app

既然要實現多表關聯:沒有在那個主表的mapper和mapper.xml裏面操做而是重新複製了一份同樣的東西。就是沒有使用mybatis自動生成的東西網站

一樣mapper.xml也是重新拉出來一個新的。this

<?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="com.alibaba.test.dao.impl.LpBaseInfoMapper">
    <resultMap id="BaseResultMap" type="com.alibaba.test.entity.impl.LpBaseInfo"
               extends="com.alibaba.test.dao.VfcLpBaseInfoMapper.BaseResultMap">

        <collection property="vfcLpBusiLicenseInfo" column="lp_No"
                    ofType="com.alibaba.test.entity.VfcLpBusiLicenseInfo"
                    select="queryList">

        </collection>

    </resultMap>


    <select id="queryList" resultMap="com.alibaba.test.dao.VfcLpBusiLicenseInfoMapper.BaseResultMap"
            parameterType="string">
    select  * from  vfc_lp_busi_license_info where  lp_No=#{lp_No}
    </select>


    <select id="getList" parameterType="com.alibaba.test.entity.co.LpListDTO" resultMap="BaseResultMap">
        select * from vfc_lp_base_info
        where 1=1
        <if test="lpListDTO.idType!=null || lpListDTO.idType.size()=0">
            id_type in
            <foreach collection="lpListDTO.idType" item="idType" index="index"
                     open="(" close=")" separator=",">
                #{idType}
            </foreach>
        </if>

        <if test="lpListDTO.lpName!=null ">
            and lp_Name=#{lpListDTO.lpName}
        </if>

        <if test="lpListDTO.idNo!=null ">
            and id_No=#{lpListDTO.idNo}
        </if>

    </select>

</mapper>

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
public class Demo {

    @Autowired
    private VfcLpBpInfoMapper bpInfoMapper;
    @Autowired
    private UserDao userDao;
    @Autowired
    private LpBaseInfoMapper lpBaseInfoMapper;


    @Test
    public void testCase(){
        System.out.println("=====================");
//        List list = userDao.selectId("11");
        List<VfcLpBpInfo> vfcLpBpInfos = bpInfoMapper.queryList();
        LpListDTO lpListDTO=new LpListDTO();
//        lpListDTO.setLpName("");
//        lpListDTO.setIdNo("");
        List<String>list=new ArrayList<>();
//        list.add("01");
//        list.add("02");
        lpListDTO.setIdType(list);
        List<LpBaseInfo> list1 = lpBaseInfoMapper.getList(lpListDTO);
        // List<VfcLpBpInfo> list1 = bpInfoMapper.getList(lpListDTO);
        System.out.println("===========");

    }

LpBaseInfospa

public class LpBaseInfo extends VfcLpBaseInfo implements Serializable {
    private VfcLpBusiLicenseInfo vfcLpBusiLicenseInfo; //附表對象
     想關聯多少個表這裏就寫多少個對象就能夠了

    public VfcLpBusiLicenseInfo getVfcLpBusiLicenseInfo() {
        return vfcLpBusiLicenseInfo;
    }

    public void setVfcLpBusiLicenseInfo(VfcLpBusiLicenseInfo vfcLpBusiLicenseInfo) {
        this.vfcLpBusiLicenseInfo = vfcLpBusiLicenseInfo;
    }
}
相關文章
相關標籤/搜索