lf-driver=com.mysql.jdbc.Driver
lf-url=jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8
lf-user=LF
lf-password=LF
<?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="cn.zr.mybatismore.mapper.ClassTeamMapper"> <!-- 一对多 通过班名字查询班里学生的信息 -->
<resultMap type="cn.zr.mybatismore.entity.ClassTeam" id="classInfo">
<id column="classid" property="classid"/>
<result column="classname" property="classname"/>
<collection property="students" ofType="cn.zr.mybatismore.entity.Student">
<id column="idnum" property="idnum"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="classid" property="classid"/>
</collection>
</resultMap>
<select id="queryStudetsByClassname" parameterType="java.lang.String" resultMap="classInfo">
SELECT
c.classid,c.classname,s.idnum,s.name,s.age
FROM
class c
INNER JOIN
student s
ON
s.classid = c.classid
WHERE
c.classname = #{classname}
</select> <!-- 一对多 通过多条查询语句来实现 -->
<resultMap type="cn.zr.mybatismore.entity.ClassTeam" id="classTeamInfo">
<id column="classid" property="classid"/>
<result column="classname" property="classname"/>
<collection property="students" ofType="cn.zr.mybatismore.entity.Student" column="classid" select="queryStudents">
<id column="idnum" property="idnum"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="classid" property="classid"/>
</collection>
</resultMap>
<select id="queryInfoByclassname" parameterType="java.lang.String" resultMap="classTeamInfo">
SELECT classid,classname FROM class WHERE classname=#{classname}
</select> <select id="queryStudents" parameterType="int" resultType="cn.zr.mybatismore.entity.Student">
SELECT idnum,name,age,classid FROM student WHERE classid = #{classid}
</select>
<!-- END 一对多 通过多条查询语句来实现 --> </mapper>
<?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="cn.zr.mybatismore.mapper.StudentMapper"> <!-- 一对一 关系映射 -->
<resultMap type="cn.zr.mybatismore.entity.Student" id="studentInfo">
<id column="idnum" property="idnum"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="classid" property="classid"/>
<association property="classTeam" javaType="cn.zr.mybatismore.entity.ClassTeam">
<id column="classid" property="classid"/>
<result column="classname" property="classname"/>
</association>
</resultMap> <!-- 一对一(根据idnum查询学生的信息以及他所在的班级) -->
<select id="queryStudentById" parameterType="int" resultMap="studentInfo">
SELECT
s.idnum,s.name,s.age,s.classid,c.classname
FROM
student s INNER JOIN class c
ON
s.classid = c.classid
WHERE
s.idnum = #{idnum}
</select> <!-- 通过多查询来实现 一对一的效果 -->
<resultMap type="cn.zr.mybatismore.entity.Student" id="stuInfo">
<id column="idnum" property="idnum"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="classid" property="classid"/>
<association property="classTeam" javaType="cn.zr.mybatismore.entity.ClassTeam" column="classid" select="queryClassByClassId">
<id column="classid" property="classid"/>
<result column="classname" property="classname"/>
</association>
</resultMap>
<select id="queryStuById" parameterType="int" resultMap="stuInfo">
SELECT idnum,name,age,classid FROM student WHERE idnum = #{idnum}
</select> <select id="queryClassByClassId" parameterType="int" resultType="cn.zr.mybatismore.entity.ClassTeam">
SELECT classid,classname FROM class WHERE classid = #{classid}
</select>
<!-- END 通过多查询来实现 一对一的效果 --> </mapper>
<?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>
<properties resource="mybatis/config/db.properties"></properties>
<!-- 配置环境 -->
<environments default="development">
<environment id="development">
<!-- 配置事务管理器的类型 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源相关的属性 -->
<dataSource type="UNPOOLED">
<property name="driver" value="${lf-driver}"/>
<property name="url" value="${lf-url}"/>
<property name="username" value="${lf-user}"/>
<property name="password" value="${lf-password}"/>
</dataSource>
</environment>
</environments>
<!--END 配置环境 --> <!-- 配置映射路径 -->
<mappers>
<mapper resource="mybatis/config/mapper/StudentMapper.xml"/>
<mapper resource="mybatis/config/mapper/ClassTeamMapper.xml" />
</mappers>
<!-- END 配置映射路径 --> </configuration>
package cn.zr.mybatismore.entity;

import java.util.List;

public class ClassTeam {

    private int classid;
private String classname; private List<Student> students; public int getClassid() {
return classid;
} public void setClassid(int classid) {
this.classid = classid;
} public String getName() {
return classname;
} public void setClassname(String classname) {
this.classname = classname;
} public List<Student> getStudents() {
return students;
} public void setStudents(List<Student> students) {
this.students = students;
} public ClassTeam() {
} public ClassTeam(int classid, String classname, List<Student> students) {
this.classid = classid;
this.classname = classname;
this.students = students;
} @Override
public String toString() {
return "ClassTeam [classid=" + classid + ", classname=" + classname
+ ", students=" + students + "]";
} }
package cn.zr.mybatismore.entity;

public class Student {

    private int idnum;
private String name;
private int age;
private int classid;
private ClassTeam classTeam; public ClassTeam getClassTeam() {
return classTeam;
}
public void setClassTeam(ClassTeam classTeam) {
this.classTeam = classTeam;
}
public int getIdnum() {
return idnum;
}
public void setIdnum(int idnum) {
this.idnum = idnum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getClassid() {
return classid;
}
public void setClassid(int classid) {
this.classid = classid;
}
public Student() {
} public Student(int idnum, String name, int age, int classid,
ClassTeam classTeam) {
this.idnum = idnum;
this.name = name;
this.age = age;
this.classid = classid;
this.classTeam = classTeam;
}
@Override
public String toString() {
return "student [idnum=" + idnum + ", name=" + name + ", age=" + age
+ ", classid=" + classid + ", classTeam=" + classTeam + "]";
} }
package cn.zr.mybatismore.mapper;

import java.util.List;

import cn.zr.mybatismore.entity.ClassTeam;

public interface ClassTeamMapper {

    /**
* 根据班名查询班里学生的相关信息
*/
List<ClassTeam> queryStudetsByClassname(String string); /**
* 根据班名查询班里学生的相关信息(多语句来实现)
*/
List<ClassTeam> queryInfoByclassname(String string); }
package cn.zr.mybatismore.mapper;

import cn.zr.mybatismore.entity.Student;

public interface StudentMapper {

    /**
* 通过id来查询学生信息以及所在班级
*/
Student queryStudentById(int i); /**
* 通过id来查询学生信息以及所在班级 (多查询)
*/
Student queryStuById(int i); }
package cn.zr.mybatismore.utils;

import java.io.IOException;
import java.io.Reader;
import java.util.List; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionManager; import cn.zr.mybatismore.entity.ClassTeam;
import cn.zr.mybatismore.entity.Student;
import cn.zr.mybatismore.mapper.ClassTeamMapper;
import cn.zr.mybatismore.mapper.StudentMapper; public class TestMore { public static void main(String[] args) {
TestMore testMore = new TestMore();
// testMore.queryStudentById();
// testMore.queryStuById(); // testMore.queryStudetsByClassname();
testMore.queryInfoByclassname();
} private static SqlSessionManager sqlSessionManager ;
private static StudentMapper studentMapper ;
private static ClassTeamMapper classTeamMapper;
//通过代码块来读取配置文件
static{
String resource = "mybatis/config/mybatis-config.xml";
try {
Reader reader = Resources.getResourceAsReader(resource);
sqlSessionManager = SqlSessionManager.newInstance(reader);
studentMapper = sqlSessionManager.getMapper(StudentMapper.class);
classTeamMapper = sqlSessionManager.getMapper(ClassTeamMapper.class);
} catch (IOException e) {
e.printStackTrace();
} } /**
* 通过id来查询学生信息以及所在班级
*/
public void queryStudentById() { Student student = studentMapper.queryStudentById(10011);
if (student==null) {
System.out.println("操作失败");
}else {
System.out.println(student);
}
} /**
* 通过id来查询学生信息以及所在班级 (多查询)
*/
private void queryStuById() {
Student student = studentMapper.queryStuById(10011);
if (student==null) {
System.out.println("操作失败");
}else {
System.out.println(student);
} } /**
* 根据班名查询班里学生的相关信息
*/
public void queryStudetsByClassname() {
List<ClassTeam> list = classTeamMapper.queryStudetsByClassname("一班");
if (list.isEmpty()) {
System.out.println("操作失败");
}else {
System.out.println(list);
}
} /**
* 根据班名查询班里学生的相关信息(多语句来实现)
*/
public void queryInfoByclassname() {
List<ClassTeam> list = classTeamMapper.queryInfoByclassname("一班");
if (list.isEmpty()) {
System.out.println("操作失败");
}else {
System.out.println(list);
}
}
}

mybatis 框架 的应用之四(一对一 与 一对多)的更多相关文章

  1. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...

  2. Mybatis注解开发多表一对一,一对多

    Mybatis注解开发多表一对一,一对多 一对一 示例:帐户和用户的对应关系为,多个帐户对应一个用户,在实际开发中,查询一个帐户并同时查询该账户所属的用户信息,即立即加载且在mybatis中表现为一对 ...

  3. Mybatis(四) 高级映射,一对一,一对多,多对多映射

    天气甚好,怎能不学习? 一.单向和双向 包括一对一,一对多,多对多这三种情况,但是每一种又分为单向和双向,在hibernate中我们就详细解析过这单向和双向是啥意思,在这里,在重复一遍,就拿一对多这种 ...

  4. 【mybatis深度历险系列】mybatis中的高级映射一对一、一对多、多对多

    学习hibernate的时候,小编已经接触多各种映射,mybatis中映射有到底是如何运转的,今天这篇博文,小编主要来简单的介绍一下mybatis中的高级映射,包括一对一.一对多.多对多,希望多有需要 ...

  5. mybatis入门基础----高级映射(一对一,一对多,多对多)

    阅读目录 一:订单商品数据模型 二.一对一查询 三.一对多查询 四.多对多查询 回到顶部 一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: CREATE TABLE items ( id ...

  6. MyBatis入门(二)---一对一,一对多

    一.创建数据库表 1.1.创建数据表同时插入数据 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.6.27-log : Database - mybati ...

  7. mybatis之级联关系(一对一、一对多)

    0. 表结构 1. 准备工作 1.1 配置文件等信息,请参考  myBatis之入门示例 1.2 entity 1.2.1 TPersonInfo.java package com.blueStarW ...

  8. Mybatis 使用 mapper 接口规范的 一对一, 一对多,多对多映射

    首先的 是 最原始的 pojo 类来 做简单映射 简单 pojo 映射: <mapper namespace="com.ghc.dao.UserDao"> <se ...

  9. MyBatis操作指南-配置结果映射一对一,一对多,多对多(基于注解)

随机推荐

  1. 深入理解java虚拟机-第二章

    第2章 Java内存区域与内存溢出异常 运行数据区域 1.程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器. 2.J ...

  2. python库之selectors

    在之前的博客中已经总结过分别在windows和linux操作系统下实现socket高并发(I/O异步)的方法,可以参考基于epoll的TP传输层实现和Windows之IOCP 下面对Python中实现 ...

  3. Java Web 高性能开发,前端的高性能

    Java Web 高性能开发,第 2 部分: 前端的高性能 Web 发展的速度让许多人叹为观止,层出不穷的组件.技术,只需要合理的组合.恰当的设置,就可以让 Web 程序性能不断飞跃.Web 的思想是 ...

  4. 《DSP using MATLAB》示例Example7.16

    代码: M = 60; alpha = (M-1)/2; l = 0:M-1; wl = (2*pi/M)*l; Hrs = [ones(1, 7), 0.5925, 0.1099, zeros(1, ...

  5. 《C#求职宝典》读书笔记

    王小科 电子工业出版 第一篇 面试求职第一步 一个例子:一支行军中的队伍长100米,一个传令兵从队尾跑至队头,再立即返回队尾,队伍正好前进了100米.假设队伍 和传令兵行进的速度恒定,问传令兵跑了多少 ...

  6. innerHTML和innerText怎么区分

    示例代码:<div id="test"> <span style="color:red">test1</span> test ...

  7. 转载:解决eclipse导出javadoc时的“错误: 编码GBK的不可映射字符”问题

    转自:http://blog.csdn.net/psy1100/article/details/51179342 今天要将自己的API接口和MODEL导出来一份java doc参考文档, 但是在导出的 ...

  8. oracle11g,安装失败,提示找不到文件,win7 64位下报错

    提示: 未找到文件 E:\app\Administrator\product\11.2.0\dbhome_5\owb\external\oc4j_applications\applications\W ...

  9. Delphi AES加密(转)

    (**************************************************************) (* Advanced Encryption Standard (AE ...

  10. 开学初的c

    cout<<a[i]<<" " 这个是先输出a[i]再输出空格 cout<<endl      这个是直接换行cout<<a[i]& ...