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