Mybatis中Collection集合標(biāo)簽的使用詳解
mybatis簡(jiǎn)單的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ù)庫(kù)建表語句:
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 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 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 resultMap='ClazzResultMap' parameterType='java.lang.Integer' > select classID,className from class_t where classID = #{clazzID}</select><select 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)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 在SQL Server 2005修改存儲(chǔ)過程2. mybatis中方法返回泛型與resultType不一致的解決3. SQL Server全文檢索簡(jiǎn)介4. 服務(wù)器Centos部署MySql并連接Navicat過程詳解5. Oracle數(shù)據(jù)庫(kù)空間使用和管理若干方法6. Oracle?Users表空間重命名問題解決7. MySQL 的啟動(dòng)和連接方式實(shí)例分析8. Oracle中pivot函數(shù)圖文實(shí)例詳解9. idea連接SQL Server數(shù)據(jù)庫(kù)的詳細(xì)圖文教程10. Docker部署Mysql集群的實(shí)現(xiàn)
