数据库
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50717
Source Host : localhost:3306
Source Database : lsq
Target Server Type : MYSQL
Target Server Version : 50717
File Encoding : 65001
Date: 2019-04-15 16:25:57
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tclass
-- ----------------------------
DROP TABLE IF EXISTS `tclass`;
CREATE TABLE `tclass` (
`cla_classname` varchar(255) DEFAULT NULL,
`cla_classnum` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50717
Source Host : localhost:3306
Source Database : lsq
Target Server Type : MYSQL
Target Server Version : 50717
File Encoding : 65001
Date: 2019-04-15 16:25:43
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`stu_name` varchar(255) DEFAULT NULL,
`stu_no` varchar(10) DEFAULT NULL,
`stu_classnum` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
bean
package bean;
public class Student {
private String name;
private String no;
private String classnum;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getClassnum() {
return classnum;
}
public void setClassnum(String classnum) {
this.classnum = classnum;
}
@Override
public String toString() {
return "学生 [name=" + name + ", no=" + no + ", classnum=" + classnum + "]";
}
public Student() {
super();
}
public Student(String name, String no, String classnum) {
super();
this.name = name;
this.no = no;
this.classnum = classnum;
}
}
package bean;
import java.util.List;
public class TClass {
private String classname;
private String classnum;
private List<Student> students;
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
public String getClassnum() {
return classnum;
}
public void setClassnum(String classnum) {
this.classnum = classnum;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
return "TClass [classname=" + classname + ", classnum=" + classnum + ", students=" + students + ", toString()="
+ super.toString() + "]";
}
public TClass() {
super();
}
public TClass(String classname, String classnum, List<Student> students) {
super();
this.classname = classname;
this.classnum = classnum;
this.students = students;
}
}
映射文件
<?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="test">
<select id="getClass" resultMap="classResult">
select * from tclass , student where student.stu_classnum =
tclass.cla_classnum and tclass.cla_classnum= #{num}
</select>
<resultMap id="classResult" type="bean.TClass">
<result property="classname" column="cla_classname" />
<result property="classnum" column="cla_classnum" />
<collection property="students" ofType="bean.Student">
<result property="name" column="stu_name" />
<result property="no" column="stu_no" />
<result property="classnum" column="stu_classnum" />
</collection>
</resultMap>
</mapper>
其实就是用级联查询查出内容,然后对内容进行整理,1对多中,collection表示那个“多”。
调用
package bean;
import static org.junit.Assert.*;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
public class TClassTest {
static String resource = "config.xml";
@Test
public void test() {
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sessionFactory.openSession();
TClass user = session.selectOne("test.getClass",303);
System.out.println(user);
session.close();
}
}