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

MyBatis實現(xiàn)多表聯(lián)查的詳細代碼

 更新時間:2022年08月02日 10:42:35   作者:blanceage  
這篇文章主要介紹了MyBatis如何實現(xiàn)多表聯(lián)查,通過實例代碼給大家介紹使用映射配置文件實現(xiàn)多表聯(lián)查,使用注解的方式實現(xiàn)多表聯(lián)查,需要的朋友可以參考下

一、通過映射配置文件實現(xiàn)多表聯(lián)查

首先,使用Mysql數(shù)據(jù)庫,創(chuàng)建兩個表,分別為學生表Student表和班級表Class表,在Student表中添加列classid參照主表的列id的外鍵約束。

學生表Student表:

班級表Class表 :

現(xiàn)在去寫Dao層和實體類

Student實體類:

package com.ape.bean;
 
import java.util.Date;
 
public class Student {
    private Integer sid;
    private String sname;
    private Date birthday;
    private String ssex;
    private int classid;
/*
    一對一
*/
    private Classs banji;
 
    public Student() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    public Student(Integer sid, String sname, Date birthday, String ssex, int classid, Classs banji) {
        this.sid = sid;
        this.sname = sname;
        this.birthday = birthday;
        this.ssex = ssex;
        this.classid = classid;
        this.banji = banji;
    }
 
    public Integer getSid() {
        return sid;
    }
 
    public void setSid(Integer sid) {
        this.sid = sid;
    }
 
    public String getSname() {
        return sname;
    }
 
    public void setSname(String sname) {
        this.sname = sname;
    }
 
    public Date getBirthday() {
        return birthday;
    }
 
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
 
    public String getSsex() {
        return ssex;
    }
 
    public void setSsex(String ssex) {
        this.ssex = ssex;
    }
 
    public int getClassid() {
        return classid;
    }
 
    public void setClassid(int classid) {
        this.classid = classid;
    }
 
    public Classs getBanji() {
        return banji;
    }
 
    public void setBanji(Classs banji) {
        this.banji = banji;
    }
 
    @Override
    public String toString() {
        return "Student{" +
                "sid=" + sid +
                ", sname='" + sname + '\'' +
                ", birthday=" + birthday +
                ", ssex='" + ssex + '\'' +
                ", classid=" + classid +
                ", banji=" + banji +
                '}';
    }
}

Class實體類:

package com.ape.bean;
 
import java.util.List;
 
public class Classs {
    private int classid;
    private String classname;
/*
    一對多
*/
    private List<Student> xuesheng;
 
    public Classs() {
    }
 
    public Classs(int classid, String classname, List<Student> xuesheng) {
        this.classid = classid;
        this.classname = classname;
        this.xuesheng = xuesheng;
    }
 
    public int getClassid() {
        return classid;
    }
 
    public void setClassid(int classid) {
        this.classid = classid;
    }
 
    public String getClassname() {
        return classname;
    }
 
    public void setClassname(String classname) {
        this.classname = classname;
    }
 
    public List<Student> getXuesheng() {
        return xuesheng;
    }
 
    public void setXuesheng(List<Student> xuesheng) {
        this.xuesheng = xuesheng;
    }
 
    @Override
    public String toString() {
        return "Classs{" +
                "classid=" + classid +
                ", classname='" + classname + '\'' +
                ", xuesheng=" + xuesheng +
                '}';
    }
}

 Mapper接口:

public interface ClassMapper {
    
    public List<Class> findClass();
}
public interface StudentMapper {
    public List<Student> findStudent();
/*
    一對多
*/
    public List<Student> findduobiao();
}

一對一關系的xml文件配置:

實現(xiàn)一對一的關系查詢,即一條student信息對應一條class信息

<resultMap id="stu_class_Map" type="Student">
		<result column="sid" property="sid" />
		<result column="sname" property="sname"/>
		<result column="birthday" property="birthday"/>
		<result column="ssex" property="ssex"/>
		<result column="classid" property="classid"/>
        <!-- 一對一的關系映射,配置封裝student的內(nèi)容 -->
		<association property="banji">
			<result column="classid" property="classid"/>
			<result column="classname" property="classname"/>
		</association>
	</resultMap>
	<select id="findduobiao" resultMap="stu_class_Map">
		select * from student inner join class on student.classid = class.classid;
	</select>

這里主要配置的就是resultMap了,配置javabean類中屬性與數(shù)據(jù)庫列名的對應關系,association是用來指定從表方的引用實體屬性的。
注意最后寫的findstudent方法中,是使用到resultMap作為接收結果值返回,與上文配置的resultMap相對應。

一對多查詢xml文件配置:

<resultMap id="class_stu_Map" type="Classs">
		<result column="classid" property="classid"/>
		<result column="classname" property="classname"/>
        <!-- Class中的集合映射 -->
		<collection property="xuesheng">
			<result column="sid" property="sid" />
			<result column="sname" property="sname"/>
			<result column="birthday" property="birthday"/>
			<result column="ssex" property="ssex"/>
			<result column="classid" property="classid"/>
		</collection>
	</resultMap>
	<select id="yiduiduo" resultMap="class_stu_Map">
		select * from class left join student on class.classid = student.classid order by class.classid;
	</select>

雖然知道使用這條sql語句查詢后的結果會有重復項,但是不用擔心,應為mybatis會自動識別到重復的內(nèi)容,只保留一個。

二、使用注解的方式

還是同樣的我們需要再建實體類,跟上面的一樣;其次Mapper接口中的方法需要加注解。

一對一:

public interface AccountDao {
  @Select("select  * from account")
  @Results(id="accountMap",value = {
      @Result(id = true,column = "id",property = "id"),
      @Result(column = "uid",property = "uid"),
      @Result(column = "money",property = "money"),
      @Result(property = "user",column = "uid",one =
      @One(select="mediacomm.dao.UserDao.findUserById",fetchType= FetchType.DEFAULT))
  })
  List<Account> findAccountWithUser();
public interface UserDao {
@Select("select * from user where id=#{id}")
  User findUserById(int id);

 一對多:

public interface UserDao {
  @Select(value = "select * from user")
  @Results(id = "userMap",value = {
      @Result(id = true,column = "id",property = "id"),
      @Result(column = "username",property = "username"),
      @Result(column = "password",property = "password"),
      @Result(column = "address",property = "address"),
      @Result(property = "accounts",column = "id",
          many = @Many(select = "mediacomm.dao.AccountDao.findAccountByUid",fetchType = FetchType.DEFAULT))
  })
  List<User> findAllUser();
 
public interface AccountDao {
 @Select("select * from account where uid=#{uid}")
  List<Account> findAccountByUid(int uid);

到此這篇關于MyBatis如何實現(xiàn)多表聯(lián)查的文章就介紹到這了,更多相關MyBatis多表聯(lián)查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mybatis Log Plugin的使用方式

    Mybatis Log Plugin的使用方式

    這篇文章主要介紹了Mybatis Log Plugin的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java中的單向鏈表詳解

    Java中的單向鏈表詳解

    這篇文章主要介紹了Java中的單向鏈表詳解,單向鏈表又叫單鏈表,是鏈表的一種,由節(jié)點構成,head指針指向第一個稱為表頭節(jié)點,而終止指向最后一個null指針,需要的朋友可以參考下
    2024-01-01
  • Java并發(fā)系列之JUC中的Lock鎖與synchronized同步代碼塊問題

    Java并發(fā)系列之JUC中的Lock鎖與synchronized同步代碼塊問題

    這篇文章主要介紹了Java并發(fā)系列之JUC中的Lock鎖與synchronized同步代碼塊,簡單介紹了lock鎖及鎖的底層知識,結合案例給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Java異常處理的12條軍規(guī)總結

    Java異常處理的12條軍規(guī)總結

    這篇文章主要給大家介紹了關于Java異常處理的12條軍規(guī),文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • Sentinel初始化啟動流程詳細介紹

    Sentinel初始化啟動流程詳細介紹

    Sentinel是一個分布式系統(tǒng)的流量控制組件,它可以實現(xiàn)限流與流控及降級等功能,提高系統(tǒng)的穩(wěn)定性和可靠性,這篇文章主要介紹了Sentinel的初始化流程,感興趣想要詳細了解可以參考下文
    2023-05-05
  • Java打包Jar包后使用腳本執(zhí)行

    Java打包Jar包后使用腳本執(zhí)行

    本文詳細講解了Java打包Jar包后使用腳本執(zhí)行的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • java  中ThreadLocal實例分析

    java 中ThreadLocal實例分析

    這篇文章主要介紹了java 中ThreadLocal實例分析的相關資料,需要的朋友可以參考下
    2017-06-06
  • MyBatis深入解讀動態(tài)SQL的實現(xiàn)

    MyBatis深入解讀動態(tài)SQL的實現(xiàn)

    動態(tài) SQL 是 MyBatis 的強大特性之一。如果你使用過 JDBC 或其它類似的框架,你應該能理解根據(jù)不同條件拼接 SQL 語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài) SQL,可以徹底擺脫這種痛苦
    2022-04-04
  • Java常用的一些多媒體文件基本操作方法簡介

    Java常用的一些多媒體文件基本操作方法簡介

    這篇文章主要介紹了Java常用的一些多媒體文件基本操作方法,包括對音頻視頻以及幻燈片的播放,需要的朋友可以參考下
    2015-10-10
  • 淺析Java中的動態(tài)代理

    淺析Java中的動態(tài)代理

    動態(tài)代理指代理類和目標類的關系在程序運行的時候確定的,客戶通過代理類來調(diào)用目標對象的方法。本文將通過案例詳細講解一下Java動態(tài)代理的原理及實現(xiàn),需要的可以參考一下
    2022-09-09

最新評論

台安县| 乡城县| 安图县| 柳江县| 社会| 襄樊市| 亚东县| 合水县| 许昌县| 资兴市| 阳新县| 黄石市| 静宁县| 道孚县| 三明市| 交城县| 玉树县| 涟源市| 长岭县| 独山县| 乳山市| 米泉市| 梨树县| 永寿县| 云南省| 府谷县| 承德市| 区。| 林甸县| 南安市| 新化县| 峡江县| 苏州市| 琼中| 梧州市| 黎城县| 卓资县| 崇明县| 进贤县| 防城港市| 张掖市|