Mybatis中Collection集合標簽的使用詳解
mybatis簡單的CURD就不用多說了,網(wǎng)上相關(guān)博客文檔一大堆。分析一下Mybatis里面的collection聚集查詢。
假設(shè)一個班級有多名學生為例,通過班級號查詢出該班級的信息,和班級里面的所有學生的信息,一般的做法就是通過班級號把班級的信息查詢出來,再通過班級ID號把該班級里面的所有學生查詢出來,我們不用這種通用的方法
1.班級實體類可以定義為這樣:
import java.util.List;
public class ClazzEntity {
private int clazzID;
private String clazzName;
private List<StudentEntity> studentList;
public int getClassID() {
return clazzID;
}
public int getClazzID() {
return clazzID;
}
public void setClazzID(int clazzID) {
this.clazzID = clazzID;
}
public String getClazzName() {
return clazzName;
}
public void setClazzName(String clazzName) {
this.clazzName = clazzName;
}
public List<StudentEntity> getStudentList() {
return studentList;
}
public void setStudentList(List<StudentEntity> studentList) {
this.studentList = studentList;
}
}
學生實體類定義:
package com.cn.hnust.pojo;
public class StudentEntity {
private int stuID;
private String stuName;
private int stuAge;
private String stuAddress;
public int getStuID() {
return stuID;
}
public void setStuID(int stuID) {
this.stuID = stuID;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public int getStuAge() {
return stuAge;
}
public void setStuAge(int stuAge) {
this.stuAge = stuAge;
}
public String getStuAddress() {
return stuAddress;
}
public void setStuAddress(String stuAddress) {
this.stuAddress = stuAddress;
}
}
2.數(shù)據(jù)庫建表語句:
CREATE TABLE student_t ( stuno INT PRIMARY KEY, stuname VARCHAR(20), stuage INT, stuaddress VARCHAR(20) , classid INT ); CREATE TABLE class_t ( classid INT PRIMARY KEY, classname VARCHAR(20) );
3.查詢ClazzEntity中的學生信息列表StudentEntity,通過mybatis中的collection標簽來配置,其中,ofType是查詢返回的學生信息對應(yīng)的實體類,select為要執(zhí)行的查詢學生列表的查詢語句,mybatis的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.cn.hnust.dao.InfoManageDao" >
<resultMap id="ClazzResultMap" type="com.cn.hnust.pojo.ClazzEntity" >
<id column="classID" property="clazzID" jdbcType="INTEGER" />
<result column="className" property="clazzName" jdbcType="VARCHAR" />
<collection property="studentList" column="classID" javaType="ArrayList"
ofType="com.cn.hnust.pojo.StudentEntity" select="getStudentByClassID"/>
</resultMap>
<resultMap id="StudentResultMap" type="com.cn.hnust.pojo.StudentEntity">
<id property="stuID" column="stuID" />
<result property="stuName" column="stuName" />
<result property="stuAge" column="stuAge" />
<result property="stuAddress" column="stuAddress" />
</resultMap>
<select id="getClassByID" resultMap="ClazzResultMap" parameterType="java.lang.Integer" >
select classID,className
from class_t
where classID = #{clazzID}
</select>
<select id="getStudentByClassID" resultMap="StudentResultMap" parameterType="java.lang.Integer" >
select stuID,stuName,stuAge,stuAddress,classID
from student_t
where classID = #{clazzID}
</select>
</mapper>
這樣就可以查到一個班級的信息,和班級里面的所有學生信息:
ClazzEntity [clazzID=1, clazzName=junior, studentList=[StudentEntity [stuID=1001, stuName=wanghai, stuAge=18, stuAddress=beijing], StudentEntity [stuID=1002, stuName=zhangdong, stuAge=20, stuAddress=shanghai]]]
到此這篇關(guān)于Mybatis中Collection集合標簽的使用詳解的文章就介紹到這了,更多相關(guān)Mybatis中Collection集合標簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MyBatis中的collection兩種使用方法及效率比較
- mybatis?實現(xiàn)多層級collection嵌套
- 解決mybatis 中collection嵌套collection引發(fā)的bug
- 詳解mybatis中association和collection的column傳入多個參數(shù)問題
- mybatis利用association或collection傳遞多參數(shù)子查詢
- Mybatis中collection和association的使用區(qū)別詳解
- Mybatis使用collection標簽進行樹形結(jié)構(gòu)數(shù)據(jù)查詢時攜帶外部參數(shù)查詢
相關(guān)文章
Java基礎(chǔ)之反射技術(shù)相關(guān)知識總結(jié)
今天帶大家復(fù)習Java基礎(chǔ)知識,文中對Java反射技術(shù)介紹的非常詳細,對正在學習Java的小伙伴們很有幫助,,需要的朋友可以參考下2021-05-05
mybatis plus開發(fā)過程中遇到的問題記錄及解決
這篇文章主要介紹了mybatis plus開發(fā)過程中遇到的問題記錄及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
Java畢業(yè)設(shè)計實戰(zhàn)之校園一卡通系統(tǒng)的實現(xiàn)
這是一個使用了java+Springboot+Maven+mybatis+Vue+mysql+wd開發(fā)的校園一卡通系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習,具有校園一卡通系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧2022-01-01
Java深入了解數(shù)據(jù)結(jié)構(gòu)之棧與隊列的詳解
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)中的棧與隊列,在Java的時候,對于棧與隊列的應(yīng)用需要熟練的掌握,這樣才能夠確保Java學習時候能夠有扎實的基礎(chǔ)能力。本文小編就來詳細說說Java中的棧與隊列,需要的朋友可以參考一下2022-01-01

