Mybatis中Collection集合標(biāo)簽的使用詳解
mybatis簡單的CURD就不用多說了,網(wǎng)上相關(guān)博客文檔一大堆。分析一下Mybatis里面的collection聚集查詢。
假設(shè)一個(gè)班級(jí)有多名學(xué)生為例,通過班級(jí)號(hào)查詢出該班級(jí)的信息,和班級(jí)里面的所有學(xué)生的信息,一般的做法就是通過班級(jí)號(hào)把班級(jí)的信息查詢出來,再通過班級(jí)ID號(hào)把該班級(jí)里面的所有學(xué)生查詢出來,我們不用這種通用的方法
1.班級(jí)實(shí)體類可以定義為這樣:
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; } }
學(xué)生實(shí)體類定義:
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中的學(xué)生信息列表StudentEntity,通過mybatis中的collection標(biāo)簽來配置,其中,ofType是查詢返回的學(xué)生信息對(duì)應(yīng)的實(shí)體類,select為要執(zhí)行的查詢學(xué)生列表的查詢語句,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>
這樣就可以查到一個(gè)班級(jí)的信息,和班級(jí)里面的所有學(xué)生信息:
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集合標(biāo)簽的使用詳解的文章就介紹到這了,更多相關(guān)Mybatis中Collection集合標(biāo)簽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MyBatis中的collection兩種使用方法及效率比較
- mybatis?實(shí)現(xiàn)多層級(jí)collection嵌套
- 解決mybatis 中collection嵌套collection引發(fā)的bug
- 詳解mybatis中association和collection的column傳入多個(gè)參數(shù)問題
- mybatis利用association或collection傳遞多參數(shù)子查詢
- Mybatis中collection和association的使用區(qū)別詳解
- Mybatis使用collection標(biāo)簽進(jìn)行樹形結(jié)構(gòu)數(shù)據(jù)查詢時(shí)攜帶外部參數(shù)查詢
相關(guān)文章
詳解Java正則表達(dá)式中Pattern類和Matcher類
java.util.regex是一個(gè)用正則表達(dá)式所訂制的模式來對(duì)字符串進(jìn)行匹配工作的類庫包。包括兩個(gè)類Pattern和Matcher Pattern,Pattern是一個(gè)正則表達(dá)式經(jīng)編譯后的表現(xiàn)模式。Matcher對(duì)象是一個(gè)狀態(tài)機(jī)器,它依據(jù)Pattern對(duì)象做為匹配模式對(duì)字符串展開匹配檢查。2016-12-12java web實(shí)現(xiàn)簡易收費(fèi)站
這篇文章主要為大家詳細(xì)介紹了java web實(shí)現(xiàn)簡易收費(fèi)站,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一2020-11-11Java基礎(chǔ)之反射技術(shù)相關(guān)知識(shí)總結(jié)
今天帶大家復(fù)習(xí)Java基礎(chǔ)知識(shí),文中對(duì)Java反射技術(shù)介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)Java的小伙伴們很有幫助,,需要的朋友可以參考下2021-05-05mybatis plus開發(fā)過程中遇到的問題記錄及解決
這篇文章主要介紹了mybatis plus開發(fā)過程中遇到的問題記錄及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之校園一卡通系統(tǒng)的實(shí)現(xiàn)
這是一個(gè)使用了java+Springboot+Maven+mybatis+Vue+mysql+wd開發(fā)的校園一卡通系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有校園一卡通系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧2022-01-01springmvc path請(qǐng)求映射到bean 方法的流程
這篇文章主要介紹了springmvc path請(qǐng)求映射到bean 方法的流程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07Java深入了解數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列的詳解
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)中的棧與隊(duì)列,在Java的時(shí)候,對(duì)于棧與隊(duì)列的應(yīng)用需要熟練的掌握,這樣才能夠確保Java學(xué)習(xí)時(shí)候能夠有扎實(shí)的基礎(chǔ)能力。本文小編就來詳細(xì)說說Java中的棧與隊(duì)列,需要的朋友可以參考一下2022-01-01