<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
類和類有關聯,將查詢的結果注入到物件和物件的關聯關係中
Mybatis處理的關聯關係 包括一對一關聯 和 一對多關聯 ,例如學生關聯班級是一對一 ;班級關聯學生是一對多。
Mybatis實現關聯關係對映,有兩種方式:多表連線
和 子查詢
tb_project
tb_cmpany
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語句,為了區分多個對映檔案,使用名稱空間+id進行區分。namespace名稱空間--> <mapper namespace="com.hyxy.dao.CompanyDao"> <!--自定義結果對映--> <resultMap id="resultMap" type="com.hyxy.po.Company"> <!--如果資料庫中有主鍵,寫id對映--> <id column="companyid" property="cId"></id> <result column="companyname" property="cName"></result> <!--一對多關係對映 (全類名.resultMap)--> <collection property="list" resultMap="com.hyxy.dao.ProjectDao.resultMap"> </collection> </resultMap> <!-- 查詢所有的專案資訊,多表連線查詢關聯的客戶資訊, 把專案資訊注入到Project物件中,把客戶資訊注入到Company物件中 Company物件注入到Project物件的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; //介面繫結,動態查詢,關聯關係查詢 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(); //一對一 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(); } } }
執行結果:
或者
ProjectMapper.xml
<!-- 使用已經定義好的一個 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>
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;//實現Company關聯Project 一對多 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語句,為了區分多個對映檔案,使用名稱空間+id進行區分。namespace名稱空間--> <mapper namespace="com.hyxy.dao.CompanyDao"> <!--自定義結果對映--> <resultMap id="resultMap" type="com.hyxy.po.Company"> <!--如果資料庫中有主鍵,寫id對映--> <id column="companyid" property="cId"></id> <result column="companyname" property="cName"></result> <!--一對多關係對映 (全類名.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; //介面繫結,動態查詢,關聯關係查詢 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(); //一對多 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(); } } }
執行結果:
一對一關聯使用<association>,一對多關聯使用<collection>
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>
到此這篇關於Mybatis實現關聯關係對映的方法範例的文章就介紹到這了,更多相關Mybatis 關聯關係對映內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45