mybatis多表关联(二)mapper文件写法
时间: 2018-06-05来源:OSCHINA
前景提要
「深度学习福利」大神带你进阶工程师,立即查看>>>
今天写多表关联写法:要使用到了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; } }

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行