![](https://i-blog.csdnimg.cn/blog_migrate/043c81689a2256364fd661d2f0acb2cf.png)
ClassInfo实体类
package com.xiao.entity;
import java.util.List;
public class ClassInfo {
private int cid;
private String cname;
private List<StudentInfo> studentInfos;
// 全参构造方法
public ClassInfo(int cid, String cname, List<StudentInfo> studentInfos) {
this.cid = cid;
this.cname = cname;
this.studentInfos = studentInfos;
}
// 无cid的构造方法
public ClassInfo(String cname, List<StudentInfo> studentInfos) {
this.cname = cname;
this.studentInfos = studentInfos;
}
// 无参构造方法
public ClassInfo() {
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public List<StudentInfo> getStudentInfos() {
return studentInfos;
}
public void setStudentInfos(List<StudentInfo> studentInfos) {
this.studentInfos = studentInfos;
}
}
--------------------------------------------------------------------------------------
StudentInfo实体类
package com.xiao.entity;
public class StudentInfo {
private int sid;
private String sname;
private String ssex;
private String sage;
private int scid;
private ClassInfo classInfo;
// 全参构造
public StudentInfo(int sid, String sname, String ssex, String sage, int scid, ClassInfo classInfo) {
this.sid = sid;
this.sname = sname;
this.ssex = ssex;
this.sage = sage;
this.scid = scid;
this.classInfo = classInfo;
}
// 无sid构造
public StudentInfo(String sname, String ssex, String sage, int scid, ClassInfo classInfo) {
this.sname = sname;
this.ssex = ssex;
this.sage = sage;
this.scid = scid;
this.classInfo = classInfo;
}
// 无sid、classInfo构造
public StudentInfo(String sname, String ssex, String sage, int scid) {
this.sname = sname;
this.ssex = ssex;
this.sage = sage;
this.scid = scid;
}
public StudentInfo() {
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public String getSage() {
return sage;
}
public void setSage(String sage) {
this.sage = sage;
}
public int getScid() {
return scid;
}
public void setScid(int scid) {
this.scid = scid;
}
public ClassInfo getClassInfo() {
return classInfo;
}
public void setClassInfo(ClassInfo classInfo) {
this.classInfo = classInfo;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<package name="com.xiao.entity"/>
</typeAliases>
<!-- 配置环境 -->
<environments default="development">
<environment id="development">
<!-- 使用JDBC的事务管理 -->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- MySQL数据库驱动 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!-- 连接数据库的URL
useSSL=false&serverTimezone=UTC
-->
<property name="url" value="jdbc:mysql://localhost:3306/homework?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 映射文件的位置 -->
<mapper resource="com/xiao/mapper/StudentMapper.xml"/>
<mapper resource="com/xiao/mapper/ClassMapper.xml"/>
</mappers>
</configuration>
ClassMapper接口
package com.xiao.mapper;
import com.xiao.entity.ClassInfo;
import java.util.List;
public interface ClassMapper {
// 全查动态方法
public List<ClassInfo> findAllClass();
}
----------------------------------------------------------------------------------
StudentMapper接口
package com.xiao.mapper;
import com.xiao.entity.StudentInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface StudentMapper {
// 查询所有的学生
public List<StudentInfo> findAll();
// 根据学生年龄和姓名查询学生信息
public List<StudentInfo> findStuByAgeName(@Param("age") String age, @Param("name") String name);
// switch...catch
public List<StudentInfo> findStuByAgeNameSex(@Param("age") String age, @Param("name") String name,@Param("sex") String sex);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiao.mapper.ClassMapper">
<resultMap id="classInfo" type="ClassInfo">
<result property="cid" column="cid"/>
<result property="cname" column="cname"/>
<collection property="studentInfos" ofType="StudentInfo">
<result property="sid" column="sid"/>
<result property="sname" column="sname"/>
<result property="ssex" column="ssex"/>
<result property="sage" column="sage"/>
<result property="scid" column="scid"/>
</collection>
</resultMap>
<!--查询所有的班级-->
<select id="findAllClass" resultMap="classInfo">
select * from class,student where class.cid=student.scid
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiao.mapper.StudentMapper">
<resultMap id="studentlist" type="StudentInfo">
<result property="sid" column="sid"/>
<result property="sname" column="sname"/>
<result property="ssex" column="ssex"/>
<result property="sage" column="sage"/>
<result property="scid" column="scid"/>
<association property="classInfo" javaType="ClassInfo" resultMap="class"></association>
</resultMap>
<resultMap id="class" type="ClassInfo">
<result property="cid" column="cid"/>
<result property="cname" column="cname"/>
</resultMap>
<!--查询所有的学生-->
<select id="findAll" resultMap="studentlist">
SELECT student.*,class.cname FROM student ,class WHERE student.scid= class.cid
</select>
<!--根据学生年龄和姓名查询学生信息-->
<select id="findStuByAgeName" parameterType="String" resultType="StudentInfo">
SELECT * FROM student where 1=1
<if test="name!=null and name !='' ">
and sname LIKE concat('%',concat(#{name},'%'))
</if>
<if test="age!=null and age !='' ">
AND sage>#{age}
</if>
</select>
<!--switch...catch-->
<select id="findStuByAgeNameSex" resultType="StudentInfo">
SELECT * FROM student where 1=1
<choose>
<when test="name!=null and name !=''">
and sname LIKE concat('%',concat(#{name},'%'))
</when>
<when test="age!=null and age !=''">
AND sage>#{age}
</when>
<when test="sex!=null and sex !=''">
AND ssex=#{sex}
</when>
</choose>
</select>
</mapper>
package com.xiao.test;
import com.xiao.entity.ClassInfo;
import com.xiao.entity.StudentInfo;
import com.xiao.mapper.ClassMapper;
import com.xiao.mapper.StudentMapper;
import com.xiao.util.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class Test01 {
public static void main(String[] args) {
// test01();
test02();
// test03();
// test04();
}
private static void test04() {
SqlSession session = MybatisUtils.getSession();
List<StudentInfo> stu = session.getMapper(StudentMapper.class).findStuByAgeNameSex(null, null, "女"); //相当于switch...catch...
for (StudentInfo s : stu) {
System.out.println(s.getSid()+"\t"+s.getSname());
}
}
private static void test03() {
SqlSession session = MybatisUtils.getSession();
List<StudentInfo> ageName = session.getMapper(StudentMapper.class).findStuByAgeName("23", null); //name="胡" 多个条件判断
for (StudentInfo s : ageName) {
System.out.println(s.getSid()+"\t"+s.getSname());
}
}
private static void test02() {
SqlSession session = MybatisUtils.getSession();
List<ClassInfo> allClass = session.getMapper(ClassMapper.class).findAllClass();
for (ClassInfo aClass : allClass) {
System.out.println(aClass.getCid()+"\t"+aClass.getCname()+"\t"+aClass.getStudentInfos().size());
List<StudentInfo> studentInfos = aClass.getStudentInfos();
for (StudentInfo studentInfo : studentInfos) {
System.out.println(studentInfo.getSname()+"\t"+studentInfo.getScid());
}
}
}
private static void test01() {
SqlSession session = MybatisUtils.getSession();
List<StudentInfo> all = session.getMapper(StudentMapper.class).findAll();
for (StudentInfo info : all) {
System.out.println(info.getSid()+"\t"+info.getClassInfo().getCname());
}
}
}