mybatis多表关联(二)mapper文件写法

今天写多表关联写法:要使用到了mybatis的多表关联查询。

附表:营业执照表

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='营业执照信息表';

主表:法人基本信息表

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法人编号 跟附表中相互关联一对一的关系

既然要实现多表关联:没有在那个主表的mapper和mapper.xml里面操作而是从新复制了一份一样的东西。就是没有使用mybatis自动生成的东西

同样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="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("===========");

    }

LpBaseInfo

public class LpBaseInfo extends VfcLpBaseInfo implements Serializable {
    private VfcLpBusiLicenseInfo vfcLpBusiLicenseInfo; //附表对象
     想关联多少个表这里就写多少个对象就可以了

    public VfcLpBusiLicenseInfo getVfcLpBusiLicenseInfo() {
        return vfcLpBusiLicenseInfo;
    }

    public void setVfcLpBusiLicenseInfo(VfcLpBusiLicenseInfo vfcLpBusiLicenseInfo) {
        this.vfcLpBusiLicenseInfo = vfcLpBusiLicenseInfo;
    }
}

猜你喜欢

转载自my.oschina.net/u/3234422/blog/1824391
今日推荐