zoukankan      html  css  js  c++  java
  • mybatis 关联查询实现一对多

    场景:最近接到一个项目是查询管理人集合  同时每一个管理人还存在多个出资人   要查询一个管理人列表  每个管理人又包含了出资人列表 采用mybatis关联查询实现返回数据。

    实现方式:

    1 .在实体中定义包含出资人集合  并创建get  set 方法    

    public class FundManager extends BaseEntity implements Serializable {
        /** 默认字段,禁止更改 **/
        @Fieldmeta(name = "主键", logflag = 0)
        private String id;
    
        @Fieldmeta(name = "管理人名称", logflag = 0)
        private String name;
    
        @Fieldmeta(name = "管理人注册地址", logflag = 0)
        private String reginAdress;
    
        @Fieldmeta(name = "法定代表人(委派代表)", logflag = 0)
        private String legalName;
    
        @Fieldmeta(name = "法人是否取得基金从业资格证", logflag = 0)
        private Integer legalFq;
    
        @Fieldmeta(name = "风控负责人", logflag = 0)
        private String riskName;
    
        @Fieldmeta(name = "风控负责人是否取得基金从业资格证", logflag = 0)
        private Integer riskFq;
    
        @Fieldmeta(name = "核心团队", logflag = 0)
        private String keyman;
    
        @Fieldmeta(name = "驻青岛人员", logflag = 0)
        private String qdman;
    
        @Fieldmeta(name = "是否在中基协备案", logflag = 0)
        private Integer record;
    
        @Fieldmeta(name = "累计管理基金数量", logflag = 0)
        private Integer fundNum;
    
        @Fieldmeta(name = "累计管理基金总规模", logflag = 0)
        private BigDecimal totalFundMoney;
    
        @Fieldmeta(name = "累计投资项目数量", logflag = 0)
        private Integer investProjectNum;
    
        @Fieldmeta(name = "累计投资项目总金额", logflag = 0)
        private BigDecimal totalProjectMoney;
    
        @Fieldmeta(name = "累计退出项目数量", logflag = 0)
        private Integer exitProjectNum;
    
        @Fieldmeta(name = "实现上市退出及收益率的项目数量", logflag = 0)
        private Integer listProjectNum;
    
        @Fieldmeta(name = "退出项目的投资总金额", logflag = 0)
        private BigDecimal exitProjectMoney;
    
        @Fieldmeta(name = "退出项目的总金额", logflag = 0)
        private BigDecimal totalExitMoney;
    
        @Fieldmeta(name = "曾经投资青岛项目数量", logflag = 0)
        private Integer investQdNum;
    
        @Fieldmeta(name = "投资青岛项目总金额", logflag = 0)
        private BigDecimal totalQdMoney;
    
        @Fieldmeta(name = "成功项目1", logflag = 0)
        private String aprojectName;
    
        @Fieldmeta(name = "回报倍数1", logflag = 0)
        private BigDecimal amultiplier;
    
        @Fieldmeta(name = "成功项目2", logflag = 0)
        private String bprojectName;
    
        @Fieldmeta(name = "回报倍数2", logflag = 0)
        private BigDecimal bmultiplier;
    
        @Fieldmeta(name = "成功项目3", logflag = 0)
        private String cprojectName;
    
        @Fieldmeta(name = "回报倍数3", logflag = 0)
        private BigDecimal cmultiplier;
    
        @Fieldmeta(name = "社会信用代码", logflag = 0)
        private String unifiedNumber;
    
        @Fieldmeta(name = "成立时间", logflag = 0)
        private Date setupDate;
    
        @Fieldmeta(name = "联系人", logflag = 0)
        private String contacts;
    
        @Fieldmeta(name = "联系电话", logflag = 0)
        private String contactTel;
    
        @Fieldmeta(name = "管理人AMAC登记号", logflag = 0)
        private String amacNumber;
    
        @Fieldmeta(name = "管理人登记时间", logflag = 0)
        private Date recordDate;
    
        @Fieldmeta(name = "管理公司认缴注册资本", logflag = 0)
        private BigDecimal planAmount;
    
        @Fieldmeta(name = "管理公司实缴资本", logflag = 0)
        private BigDecimal amount;
    
        @Fieldmeta(name = "管理员是否新设", logflag = 0)
        private Integer isNew;
    
        @Fieldmeta(name = "详细介绍", logflag = 0)
        private String information;
    
        @Fieldmeta(name = "GP是否同基金管理人(是or否)", logflag = 0)
        private Integer managerIsGp;
    
        @Fieldmeta(name = "是否gp", logflag = 0)
        private Integer gpFlage;
    
        @Fieldmeta(name="申报id",logflag = 0)
        private String gpNotifyId;
    
        /** 以下是公共扩展属性(若有较多非共性扩展属性,需定义在子类中) **/
        private List<Investorinfo> investorinfos;
    
        /** 以下是默认get/set方法,一般情况下禁止更改 **/
        /** 注意: **/
        /** 1,若使用数据字典翻译,建议增加getXXXXValue方法,页面调用使用xXXXXValue **/
        /** 2,若字段用于显示时,存在一些特殊处理逻辑,建议增加getXXXXForView方法,页面调用使用xXXXXForView **/
        public void setId(String id){
            this.id = id;
        }
    
        public String getId( ){
            return this.id;
        }
        public void setName(String name){
            this.name = name;
        }
    
        public String getName( ){
            return this.name;
        }
        public void setReginAdress(String reginAdress){
            this.reginAdress = reginAdress;
        }
    
        public String getReginAdress( ){
            return this.reginAdress;
        }
        public void setLegalName(String legalName){
            this.legalName = legalName;
        }
    
        public String getLegalName( ){
            return this.legalName;
        }
        public void setLegalFq(Integer legalFq){
            this.legalFq = legalFq;
        }
    
        public Integer getLegalFq( ){
            return this.legalFq;
        }
        public void setRiskName(String riskName){
            this.riskName = riskName;
        }
    
        public String getRiskName( ){
            return this.riskName;
        }
        public void setRiskFq(Integer riskFq){
            this.riskFq = riskFq;
        }
    
        public Integer getRiskFq( ){
            return this.riskFq;
        }
        public void setKeyman(String keyman){
            this.keyman = keyman;
        }
    
        public String getKeyman( ){
            return this.keyman;
        }
        public void setQdman(String qdman){
            this.qdman = qdman;
        }
    
        public String getQdman( ){
            return this.qdman;
        }
        public void setRecord(Integer record){
            this.record = record;
        }
    
        public Integer getRecord( ){
            return this.record;
        }
        public void setFundNum(Integer fundNum){
            this.fundNum = fundNum;
        }
    
        public Integer getFundNum( ){
            return this.fundNum;
        }
        public void setTotalFundMoney(BigDecimal totalFundMoney){
            this.totalFundMoney = totalFundMoney;
        }
    
        public BigDecimal getTotalFundMoney( ){
            return this.totalFundMoney;
        }
        public void setInvestProjectNum(Integer investProjectNum){
            this.investProjectNum = investProjectNum;
        }
    
        public Integer getInvestProjectNum( ){
            return this.investProjectNum;
        }
        public void setTotalProjectMoney(BigDecimal totalProjectMoney){
            this.totalProjectMoney = totalProjectMoney;
        }
    
        public BigDecimal getTotalProjectMoney( ){
            return this.totalProjectMoney;
        }
        public void setExitProjectNum(Integer exitProjectNum){
            this.exitProjectNum = exitProjectNum;
        }
    
        public Integer getExitProjectNum( ){
            return this.exitProjectNum;
        }
        public void setListProjectNum(Integer listProjectNum){
            this.listProjectNum = listProjectNum;
        }
    
        public Integer getListProjectNum( ){
            return this.listProjectNum;
        }
        public void setExitProjectMoney(BigDecimal exitProjectMoney){
            this.exitProjectMoney = exitProjectMoney;
        }
    
        public BigDecimal getExitProjectMoney( ){
            return this.exitProjectMoney;
        }
        public void setTotalExitMoney(BigDecimal totalExitMoney){
            this.totalExitMoney = totalExitMoney;
        }
    
        public BigDecimal getTotalExitMoney( ){
            return this.totalExitMoney;
        }
        public void setInvestQdNum(Integer investQdNum){
            this.investQdNum = investQdNum;
        }
    
        public Integer getInvestQdNum( ){
            return this.investQdNum;
        }
        public void setTotalQdMoney(BigDecimal totalQdMoney){
            this.totalQdMoney = totalQdMoney;
        }
    
        public BigDecimal getTotalQdMoney( ){
            return this.totalQdMoney;
        }
        public void setAprojectName(String aprojectName){
            this.aprojectName = aprojectName;
        }
    
        public String getAprojectName( ){
            return this.aprojectName;
        }
        public void setAmultiplier(BigDecimal amultiplier){
            this.amultiplier = amultiplier;
        }
    
        public BigDecimal getAmultiplier( ){
            return this.amultiplier;
        }
        public void setBprojectName(String bprojectName){
            this.bprojectName = bprojectName;
        }
    
        public String getBprojectName( ){
            return this.bprojectName;
        }
        public void setBmultiplier(BigDecimal bmultiplier){
            this.bmultiplier = bmultiplier;
        }
    
        public BigDecimal getBmultiplier( ){
            return this.bmultiplier;
        }
        public void setCprojectName(String cprojectName){
            this.cprojectName = cprojectName;
        }
    
        public String getCprojectName( ){
            return this.cprojectName;
        }
        public void setCmultiplier(BigDecimal cmultiplier){
            this.cmultiplier = cmultiplier;
        }
    
        public BigDecimal getCmultiplier( ){
            return this.cmultiplier;
        }
        public void setUnifiedNumber(String unifiedNumber){
            this.unifiedNumber = unifiedNumber;
        }
    
        public String getUnifiedNumber( ){
            return this.unifiedNumber;
        }
        public void setSetupDate(Date setupDate){
            this.setupDate = setupDate;
        }
    
        public Date getSetupDate( ){
            return this.setupDate;
        }
        public void setContacts(String contacts){
            this.contacts = contacts;
        }
    
        public String getContacts( ){
            return this.contacts;
        }
        public void setContactTel(String contactTel){
            this.contactTel = contactTel;
        }
    
        public String getContactTel( ){
            return this.contactTel;
        }
        public void setAmacNumber(String amacNumber){
            this.amacNumber = amacNumber;
        }
    
        public String getAmacNumber( ){
            return this.amacNumber;
        }
        public void setRecordDate(Date recordDate){
            this.recordDate = recordDate;
        }
    
        public Date getRecordDate( ){
            return this.recordDate;
        }
        public void setPlanAmount(BigDecimal planAmount){
            this.planAmount = planAmount;
        }
    
        public BigDecimal getPlanAmount( ){
            return this.planAmount;
        }
        public void setAmount(BigDecimal amount){
            this.amount = amount;
        }
    
        public BigDecimal getAmount( ){
            return this.amount;
        }
        public void setIsNew(Integer isNew){
            this.isNew = isNew;
        }
    
        public Integer getIsNew( ){
            return this.isNew;
        }
        public void setInformation(String information){
            this.information = information;
        }
    
        public String getInformation( ){
            return this.information;
        }
        public void setManagerIsGp(Integer managerIsGp){
            this.managerIsGp = managerIsGp;
        }
    
        public Integer getManagerIsGp( ){
            return this.managerIsGp;
        }
        public void setGpFlage(Integer gpFlage){
            this.gpFlage = gpFlage;
        }
    
        public Integer getGpFlage( ){
            return this.gpFlage;
        }
    
        public String getGpNotifyId() {
            return gpNotifyId;
        }
    
        public void setGpNotifyId(String gpNotifyId) {
            this.gpNotifyId = gpNotifyId;
        }
    
        /** 扩展get/set方法 **/
        public List<Investorinfo> getInvestorinfos() {
            return investorinfos;
        }
    
        public void setInvestorinfos(List<Investorinfo> investorinfos) {
            this.investorinfos = investorinfos;
        }
    
    
    }
    View Code

    2. mybatis.xml文件中实现  定义基本查询语句查询管理人集合  返回resultMap 结果集  在resultMap返回结果中进行关联关系映射查询,collection实现一对多查询

    其中<id>标签为查询fundManager 的id 在管理时候的别名与关联字短  比如 on t.id=s.id  在collection 标签中通过select 属性来指定关联的查询语句  但是本次我关联的两个

    查询分别属于不同的xml文件这时候如何实现在一个mapper.xml 文件中引用另外一个mapper.xml文件的查询语句那 ,采用命名空间加.id属性对应的名方式

    fundManagerMapper.xml

    <!-- #######【开始】扩展代码区,可自由改动。####### -->
        <resultMap id="ResultMapWithInvestor" type="com.qk.gpportal.core.fundmanager.entity.FundManager" extends="BaseResultMap">
                <id property="id" column="id"/>
               <collection property="investorinfos" ofType="com.qk.gpportal.core.investorinfo.entity.Investorinfo" column="id" select="com.qk.gpportal.core.investorinfo.dao.InvestorinfoMapper.getInvestors">
               </collection>
        </resultMap>
        <select id="getFundManagerBygpNotifyId" parameterType="java.lang.String" resultMap="ResultMapWithInvestor">
            select <include refid="Columns"/>
            FROM  g_fund_manager WHERE  gp_notify_id= #{gpNotifyId,jdbcType=VARCHAR}
        </select>
    <!-- #######【结束】扩展代码区,可自由改动。####### -->
    View Code

    investorinfoMapper.xml  id的名字通过在fundmanagerMapper.xml文件中表空间方式.id名称方式引用   可以实现不同.xml方法之间的引用

      <select id="getInvestors" resultMap="BaseResultMap" parameterType="java.lang.String">
            select  <include refid="Columns"/>
            from g_investorinfo  where fund_manager_id = #{id}
        </select>
    View Code
  • 相关阅读:
    前端登录,这一篇就够了
    JS 之跨域问题汇总
    一篇搞定(Js异步、事件循环与消息队列、微任务与宏任务)
    在vue-cli@3.X中配置代理解决开发环境的跨域问题的同时解决cookie问题--Cookies 解决方案
    多包管理工具lerna
    js中的事件监听(冒泡和捕获)
    js事件监听/鼠标滚轮/行为/冒泡/键盘的兼容性写法
    详解clientHeight、offsetHeight、scrollHeight
    Css背景渐变
    CSS生成内容
  • 原文地址:https://www.cnblogs.com/lwdmaib/p/9559584.html
Copyright © 2011-2022 走看看