1、配置文件

db.properties

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8
db.username=root
db.password=123456

SqlMapConfig.xml

 <?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> <!-- 加载java的配置文件 -->
<properties resource="config/db.properties"/> <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用mybatis连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</dataSource>
</environment>
</environments> <!-- 加载映射文件 -->
<mappers>
<mapper resource="config/mapper.xml" />
</mappers> </configuration>

mapper.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.xiaostudy.domain.Mapper"> <!-- ========================================================================================== -->
<!-- 一对多之resultMap1 -->
<select id="findOfTeacher" resultMap="OfTeacher">
select * from teacher t, student s where t.tid=s.tid and t.tid=#{id}
</select>
<resultMap type="com.xiaostudy.domain.Teacher" id="OfTeacher">
<id column="tid" property="tid"/>
<result column="tname" property="tname"/>
<collection property="student" ofType="com.xiaostudy.domain.Student" ><!-- javaType="HashSet" -->
<id column="sid" property="sid"></id>
<result column="tid" property="tid"/>
<result column="sname" property="sname"/>
</collection>
</resultMap>
<!-- ========================================================================================== --> <!-- ========================================================================================== -->
<!-- 一对多之resultMap2 -->
<select id="findOfTeachers" resultMap="OfTeachers">
select * from teacher t, student s where t.tid=s.tid and t.tid=#{id}
</select>
<resultMap type="com.xiaostudy.domain.Teacher" id="OfTeachers">
<id column="tid" property="tid"/>
<result column="tname" property="tname"/>
<collection property="student" ofType="com.xiaostudy.domain.Student" select="getStudent" column="tid"/>
</resultMap> <select id="getStudent" parameterType="int" resultType="com.xiaostudy.domain.Student">
select * from student s where s.tid = #{id}
</select>
<!-- ========================================================================================== --> </mapper>

2、domain类

Student.java

 package com.xiaostudy.domain;

 public class Student {
private int sid;
private int tid;
private String sname;
private Teacher teacher; public int getSid() {
return sid;
} public void setSid(int sid) {
this.sid = sid;
} public int getTid() {
return tid;
} public void setTid(int tid) {
this.tid = tid;
} public String getSname() {
return sname;
} public void setSname(String sname) {
this.sname = sname;
} public Teacher getTeacher() {
return teacher;
} public void setTeacher(Teacher teacher) {
this.teacher = teacher;
} @Override
public String toString() {
return "Student [sid=" + sid + ", tid=" + tid + ", sname=" + sname
+ ", teacher=" + teacher + "]";
} }

Teacher.java

 package com.xiaostudy.domain;

 import java.util.Set;

 public class Teacher {
private int tid;
private String tname;
private Set<Student> student; public Set<Student> getStudent() {
return student;
} public void setStudent(Set<Student> student) {
this.student = student;
} public int getTid() {
return tid;
} public void setTid(int tid) {
this.tid = tid;
} public String getTname() {
return tname;
} public void setTname(String tname) {
this.tname = tname;
} @Override
public String toString() {
return "Teacher [tid=" + tid + ", tname=" + tname + ", student=" + student + "]";
} }

3、代理类Mapper.java

 package com.xiaostudy.domain;

 import java.util.List;

 public interface Mapper {

     // 一对多之resultMap1
public List<Teacher> findOfTeacher(int id); // 一对多之resultMap2
public List<Teacher> findOfTeachers(int id); }

4、测试类

 package com.xiaostudy.test;

 import java.io.IOException;
import java.io.InputStream;
import java.util.List; 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 com.xiaostudy.domain.Mapper;
import com.xiaostudy.domain.Teacher; /**
* @desc 测试类
* @author xiaostudy
*
*/
public class MybatisTest { public static void main(String[] args) throws IOException {
String resource = "config/SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource); // 创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); // 获取一个代理dao实现
Mapper mapper = sqlSession.getMapper(Mapper.class); //一对多之resultMap1
/*List<Teacher> list = mapper.findOfTeacher(1);
for(Teacher t : list) {
System.out.println(t);
}*/ //一对多之resultMap2
List<Teacher> list = mapper.findOfTeachers(1);
for(Teacher t : list) {
System.out.println(t);
} sqlSession.close(); } }

5、数据库

teacher表

student表


最新文章

  1. 卡巴斯基2017激活教程_卡巴斯基2017用授权文件KEY激活的方法
  2. 如何在ARM中创建Express Route
  3. 微信平台ASPX高级定制开发(一):如何使用C#建立响应微信接入和自动回复的代码
  4. 利用Roslyn构建一个简单的C#交互脚本引擎
  5. CentOS6.3下安装VSFTP服务
  6. detours安装和使用
  7. ZeroMQ(java)之Router与Dealer运行原理
  8. Cocos2d-x游戏开发之计时器
  9. 第十六章:网络IPC:套接字
  10. AVR GCC对端口的操作指南
  11. [置顶] VB 中chr(10)、chr(13)和vblf、vbcr、vbcrlf的分别
  12. lamda表达式学习
  13. JavaEE Tutorials (15) - 对Java持久化API应用使用二级缓存
  14. Delphi语言最好的JSON代码库 mORMot学习笔记1
  15. 数据挖掘进阶之关联规则挖掘FP-Growth算法
  16. Sql语句基础练习(一)
  17. Gym - 101350G Snake Rana(容器原理)
  18. Eclipse集成Hadoop插件
  19. 信号(signal)
  20. 09 python初学 (字符串)

热门文章

  1. Apache Samza - Reliable Stream Processing atop Apache Kafka and Hadoop YARN
  2. 安装和使用PhantomJS
  3. A Magic Lamp---hdu3183(链表删除| RMQ)
  4. Python性能优化(转)
  5. RESTful HTTP的实践(转)
  6. Spring-基于设置函数的依赖注入
  7. Spark2.0 Pipelines
  8. wireshark抓TCP包
  9. POJ1459:Power Network(dinic)
  10. vue 动画过渡