最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis實(shí)現(xiàn)關(guān)聯(lián)關(guān)系映射的方法示例

 更新時(shí)間:2022年07月18日 14:21:49   作者:aigo-2021  
本文主要介紹了Mybatis實(shí)現(xiàn)關(guān)聯(lián)關(guān)系映射的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

類和類有關(guān)聯(lián),將查詢的結(jié)果注入到對(duì)象和對(duì)象的關(guān)聯(lián)關(guān)系中

Mybatis處理的關(guān)聯(lián)關(guān)系 包括一對(duì)一關(guān)聯(lián)一對(duì)多關(guān)聯(lián) ,例如學(xué)生關(guān)聯(lián)班級(jí)是一對(duì)一 ;班級(jí)關(guān)聯(lián)學(xué)生是一對(duì)多。

Mybatis實(shí)現(xiàn)關(guān)聯(lián)關(guān)系映射,有兩種方式:多表連接子查詢

數(shù)據(jù)庫(kù)表結(jié)構(gòu)

tb_project 

tb_cmpany

 一、實(shí)現(xiàn)Project關(guān)聯(lián)Company一對(duì)一關(guān)聯(lián)

Company.java

package com.hyxy.po;
 
import java.util.List;
 
public class Company {
    private int cId;
    private String cName;
 
    public int getcId() {
        return cId;
    }
 
    public void setcId(int cId) {
        this.cId = cId;
    }
 
    public String getcName() {
        return cName;
    }
 
    public void setcName(String cName) {
        this.cName = cName;
    }
}

Project.java

Project中聲明Company類型的屬性

package com.hyxy.po;
 
public class Project {
    private int pId;
    private String projectName;
    private int cId;
    private int empId;
    private int amt;
    private Company company;
 
    public Company getCompany() {
        return company;
    }
 
    public void setCompany(Company company) {
        this.company = company;
    }
 
    public int getpId() {
        return pId;
    }
 
    public void setpId(int pId) {
        this.pId = pId;
    }
 
    public String getProjectName() {
        return projectName;
    }
 
    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }
 
    public int getcId() {
        return cId;
    }
 
    public void setcId(int cId) {
        this.cId = cId;
    }
 
    public int getEmpId() {
        return empId;
    }
 
    public void setEmpId(int empId) {
        this.empId = empId;
    }
 
    public int getAmt() {
        return amt;
    }
 
    public void setAmt(int amt) {
        this.amt = amt;
    }
}

ProjectDao.java

package com.hyxy.dao;
 
import com.hyxy.po.Project;
 
import java.util.List;
 
public interface ProjectDao {
    public List<Project> select();
}

ProjectMapper.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">
<!--所有映射文件中的sql語句,為了區(qū)分多個(gè)映射文件,使用命名空間+id進(jìn)行區(qū)分。namespace命名空間-->
<mapper namespace="com.hyxy.dao.CompanyDao">
    <!--自定義結(jié)果映射-->
    <resultMap id="resultMap" type="com.hyxy.po.Company">
        <!--如果數(shù)據(jù)庫(kù)中有主鍵,寫id映射-->
        <id column="companyid" property="cId"></id>
        <result column="companyname" property="cName"></result>
        <!--一對(duì)多關(guān)系映射  (全類名.resultMap)-->
        <collection property="list" resultMap="com.hyxy.dao.ProjectDao.resultMap">
        </collection>
 
    </resultMap>
    <!--
        查詢所有的項(xiàng)目信息,多表連接查詢關(guān)聯(lián)的客戶信息,
        把項(xiàng)目信息注入到Project對(duì)象中,把客戶信息注入到Company對(duì)象中
        Company對(duì)象注入到Project對(duì)象的company屬性中
    -->
    <select id="select" resultMap="resultMap">
        select * from tb_company c
        inner join tb_project p on p.companyid=c.companyid
 
    </select>
 
</mapper>

Test1.java

package com.hyxy;
 
import com.hyxy.dao.ProjectDao;
 
import com.hyxy.po.Project;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
import java.io.IOException;
import java.io.Reader;
import java.util.List;
//接口綁定,動(dòng)態(tài)查詢,關(guān)聯(lián)關(guān)系查詢
public class Test1 {
    public static void main(String[] args) {
        Reader reader=null;
        try{
            reader= Resources.getResourceAsReader("configuration.xml");
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
            SqlSession sqlSession=sqlSessionFactory.openSession();
            //一對(duì)一
            ProjectDao projectDao=sqlSession.getMapper(ProjectDao.class);
            List<Project> list =projectDao.select();
            for(Project p:list){
                System.out.println(p.getcId()+","+p.getProjectName()+","+p.getCompany().getcName());
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

運(yùn)行結(jié)果:

 或者

ProjectMapper.xml

<!-- 使用已經(jīng)定義好的一個(gè) resultMap -->
<association property="company" resultMap="com.hyxy.dao.CompanyDao.resultMap">
</association>

CompanyMapper.xml

<mapper namespace="com.hyxy.dao.CompanyDao">
    <resultMap id="resultMap" type="com.hyxy.po.Company">
        <id column="companyid" property="cId"></id>
        <result column="companyname" property="cname"></result>
    </resultMap>
</mapper>

二、實(shí)現(xiàn)Company關(guān)聯(lián)Project一對(duì)多關(guān)系

Company類中聲明 List<Project> 屬性

Company.java

package com.hyxy.po;
 
import java.util.List;
 
public class Company {
    private int cId;
    private String cName;
    private List<Project> list;//實(shí)現(xiàn)Company關(guān)聯(lián)Project 一對(duì)多
 
    public List<Project> getList() {
        return list;
    }
 
    public void setList(List<Project> list) {
        this.list = list;
    }
 
    public int getcId() {
        return cId;
    }
 
    public void setcId(int cId) {
        this.cId = cId;
    }
 
    public String getcName() {
        return cName;
    }
 
    public void setcName(String cName) {
        this.cName = cName;
    }
}

CompanyDao.java

package com.hyxy.dao;
 
import com.hyxy.po.Company;
 
import java.util.List;
 
public interface CompanyDao {
    public List<Company> select();
}

CompanyMapper.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">
<!--所有映射文件中的sql語句,為了區(qū)分多個(gè)映射文件,使用命名空間+id進(jìn)行區(qū)分。namespace命名空間-->
<mapper namespace="com.hyxy.dao.CompanyDao">
    <!--自定義結(jié)果映射-->
    <resultMap id="resultMap" type="com.hyxy.po.Company">
        <!--如果數(shù)據(jù)庫(kù)中有主鍵,寫id映射-->
        <id column="companyid" property="cId"></id>
        <result column="companyname" property="cName"></result>
        <!--一對(duì)多關(guān)系映射  (全類名.resultMap)-->
        <collection property="list" resultMap="com.hyxy.dao.ProjectDao.resultMap">
        </collection>
 
    </resultMap>
    <select id="select" resultMap="resultMap">
        select * from tb_company c
        inner join tb_project p on p.companyid=c.companyid
 
    </select>
 
</mapper>

Test2.java

package com.hyxy;
 
import com.hyxy.dao.CompanyDao;
import com.hyxy.po.Company;
import com.hyxy.po.Project;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
import java.io.IOException;
import java.io.Reader;
import java.util.List;
 
//接口綁定,動(dòng)態(tài)查詢,關(guān)聯(lián)關(guān)系查詢
public class Test2 {
    public static void main(String[] args) {
        Reader reader=null;
        try{
            reader= Resources.getResourceAsReader("configuration.xml");
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
            SqlSession sqlSession=sqlSessionFactory.openSession();
            //一對(duì)多
            CompanyDao companyDao=sqlSession.getMapper(CompanyDao.class);
            List<Company> list= companyDao.select();
            for(Company c:list){
                System.out.println(c.getcName());
                for(Project p:c.getList()){
                    System.out.println(p.getProjectName());
                }
                System.out.println("--------------------");
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

運(yùn)行結(jié)果:

一對(duì)一關(guān)聯(lián)使用<association>,一對(duì)多關(guān)聯(lián)使用<collection>

 三、Mybatis子查詢方式實(shí)現(xiàn)關(guān)聯(lián)關(guān)系查詢

ProjectMapper.xml

<association property="company" javaType="com.hyxy.po.Company" column="companyid" select="com.hyxy.dao.CompanyDao.selectById">
</association>
<select id="select" resultMap="resultMap">
    select * from tb_project
</select>

CompanyMapper.xml

<mapper namespace="com.hyxy.dao.CompanyDao">
    <resultMap id="resultMap" type="com.hyxy.po.Company">
        <id column="companyid" property="companyId"></id>
        <result column="companyname" property="companyName"></result>
        <collection property="list" resultMap="com.hyxy.dao.ProjectDao.resultMap">
    </collection>
    </resultMap>
    <select id="select" resultMap="resultMap">
        select * from tb_company c inner join tb_project p on c.companyid = p.companyid
    </select>
    <select id="selectById" resultMap="resultMap" parameterType="int">
        select * from tb_company where companyid = #{id}
    </select>
</mapper>

到此這篇關(guān)于Mybatis實(shí)現(xiàn)關(guān)聯(lián)關(guān)系映射的方法示例的文章就介紹到這了,更多相關(guān)Mybatis 關(guān)聯(lián)關(guān)系映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

建始县| 唐河县| 紫阳县| 佛冈县| 庆云县| 灵寿县| 东城区| 高雄县| 边坝县| 德阳市| 岳阳市| 金湖县| 榆树市| 江陵县| 濉溪县| 盖州市| 乳山市| 太仆寺旗| 建昌县| 响水县| 广汉市| 屯门区| 隆德县| 元谋县| 巧家县| 伊金霍洛旗| 南开区| 灌阳县| 沧源| 龙州县| 富阳市| 琼结县| 青海省| 汝南县| 紫金县| 仁布县| 奉贤区| 增城市| 肥西县| 阳山县| 宿松县|