Mybatis官方文档说明处

Mybatis 一对多 结果集映射 简单入门 易懂

  • 一、搭建数据库环境
  • 二、idea 搭建maven 项目 (mybatis-demo)
    • 2.1、项目结构
    • 2.2、导入依赖
    • 2.3、mysql 配置文件
    • 2.4、创建pojo 类
    • 2.5、写一个mybatis 的工具类
    • 2.7、 写一个TeacherMapper
    • 2.8、mybatis-config.xml 文件
  • 测试:
  • 自言自语

一、搭建数据库环境

student 表

DROP TABLE IF EXISTS `student_2`;
CREATE TABLE `student_2`  (`id` int(10) NOT NULL,`name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`tid` int(10) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,INDEX `fktid`(`tid`) USING BTREE,CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `student_2` VALUES (1, '小明', 1);
INSERT INTO `student_2` VALUES (2, '邱ss', 2);
INSERT INTO `student_2` VALUES (3, '邱大哥', 3);
INSERT INTO `student_2` VALUES (4, '杨大哥', 1);
INSERT INTO `student_2` VALUES (5, '杨ss', 2);

teacher

DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher`  (`id` int(10) NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES (1, '小王老师');
INSERT INTO `teacher` VALUES (2, '小李老师');
INSERT INTO `teacher` VALUES (3, '小黑老师');

二、idea 搭建maven 项目 (mybatis-demo)

2.1、项目结构

2.2、导入依赖

    <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.48</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies>

2.3、mysql 配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm-study?useSSL=false
jdbc.username=root
jdbc.password=123456

2.4、创建pojo 类

学生

/*** @Author: crush* @Date: 2021-06-17 18:23* version 1.0*/
public class Student {/*** 学生id*/private Integer id;/*** xueshneg xingming*/private String name;/*** 老师id*/private Integer tid;
}

老师

/*** @Author: crush* @Date: 2021-06-17 18:23* version 1.0*/
public class Teacher {/*** 老师id*/private Integer id;/*** 老师的姓名*/private String name;/*** 每个老师是不是有很多学生*/private List<Student> students;
}

2.5、写一个mybatis 的工具类

/*** @author crush*/
public class MybatisUtil {private static SqlSessionFactory sqlSessionFactory;static {try {String resource="mybatis-config.xml";InputStream inputStream= Resources.getResourceAsStream(resource);sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}public static SqlSession getSession(){return sqlSessionFactory.openSession(true);}
}

2.7、 写一个TeacherMapper

import com.crush.pojo.Teacher;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface TeacherMapper {// 获取老师List<Teacher> getTeacher();//获取指定老师下的所有学生及老师的信息Teacher getTeacher2(@Param("tid") Integer id);//获取指定老师下的所有学生及老师的信息Teacher getTeacher3(@Param("tid") Integer id);}

写一个TeacherMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.crush.dao.TeacherMapper"><select id="getTeacher" resultType="Teacher">select * from teacher</select><select id="getTeacher2" resultMap="TeacherStudent">select s.id sid,s.name sname,t.name tname,t.id tid from student_2 s,teacher t where s.tid=t.id and t.id=#{tid}</select><resultMap id="TeacherStudent" type="Teacher"><result property="id" column="tid"/><result property="name" column="tname"/><!--复杂的属性,我们需要单独处理 对象 association  集合collectionjavaType ="" 是指属性的类型集合中的泛型的信息 我们使用ofType 获取--><collection property="students" ofType="Student"><result property="id" column="sid"/><result property="name" column="sname"/><result property="tid" column="tid"/></collection></resultMap><!--========================= 结果集映射=============================--><select id="getTeacher3" resultMap="TeacherStudent3">select * from teacher where id=#{tid}</select><resultMap id="TeacherStudent3" type="Teacher"><collection property="students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherId" column="id" /></resultMap><select id="getStudentByTeacherId" resultType="Student">select  * from  student_2 where tid=#{tid}</select></mapper>

2.8、mybatis-config.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><!--属性--><properties resource="dbconfig.properties"/><!--设置--><settings><!-- STDOUT_LOGGING 打印到控制台 --><setting name="logImpl" value="STDOUT_LOGGING"/><!-- 开启驼峰 --><setting name="mapUnderscoreToCamelCase" value="true"/></settings><!--别名--><typeAliases><!--这是 自己 取别名--><typeAlias alias="Student" type="com.crush.pojo.Student"/><typeAlias alias="Teacher" type="com.crush.pojo.Teacher"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><mapper resource="mapper/StudentMapper.xml"/><mapper resource="mapper/TeacherMapper.xml"/></mappers>
</configuration>

测试:

/*** @Author: crush* @Date: 2021-06-17 18:22* version 1.0*/
public class MyTest {@Testpublic void getTeacher(){SqlSession session = MybatisUtil.getSession();TeacherMapper mapper = session.getMapper(TeacherMapper.class);List<Teacher> teacher = mapper.getTeacher();System.out.println(teacher);session.close();}@Testpublic  void getTeacher2(){SqlSession session = MybatisUtil.getSession();TeacherMapper mapper = session.getMapper(TeacherMapper.class);Teacher teacher2 = mapper.getTeacher2(1);System.out.println(teacher2);session.close();}@Testpublic  void getTeacher3(){SqlSession session = MybatisUtil.getSession();TeacherMapper mapper = session.getMapper(TeacherMapper.class);Teacher teacher2 = mapper.getTeacher3(1);System.out.println(teacher2);session.close();}
}

自言自语

难啊,加油吧

Mybatis 一对多 结果集映射 简单入门 易懂相关推荐

  1. Mybatis简单入门

    1 mybatis简单介绍 MyBatis是一个ORM的数据库持久化框架. Mybatis是一个支撑框架,它以映射sql语句orm方式来数据库持久化操作. ORM:对象关系映射(Object Rela ...

  2. AutoHotKey简单入门

    简单入门 快捷键 ^j::Send, Hello world! Return ^j::代表Ctrl+J,其中^代表Ctrl键 Send命令:在光标处输入Hello world! 也就是说,你按下Ctr ...

  3. 这就是你要找的Spring-ioc简单入门!

    Spring简单入门 - ioc 大二下学期了,发现身边的同学,工作室的下伙伴最近都准备考研,迷茫中不晓得怎么选择,学长考研复试中说这个CSDN写博客的阅读量是个加分点.之前学长一直叫我们写博客,记录 ...

  4. 【学习笔记】网络流算法简单入门

    [学习笔记]网络流算法简单入门 [大前言] 网络流是一种神奇的问题,在不同的题中你会发现各种各样的神仙操作. 而且从理论上讲,网络流可以处理所有二分图问题. 二分图和网络流的难度都在于问题建模,一般不 ...

  5. Struts2框架简单入门

    Struts2框架简单入门 1.前言 2.Struts2简介 2.1.Struts2介绍 2.2.Struts2优缺点 2.2.1.优点 2.2.2.缺点 2.2.3.Struts2获取 3.入门案例 ...

  6. 拜占庭共识Tendermint介绍及简单入门

    1.Tendermint是什么 Tenermint 是一个软件,用于在多台机器安全一致地复制一个应用.所谓安全,指的是即使有多达 1/3 的机器出现任意故障的情况下, Tendermint 仍然能够正 ...

  7. Spark-----Spark 与 Hadoop 对比,Spark 集群搭建与示例运行,RDD算子简单入门

    目录 一.Spark 概述 1.1. Spark是什么 1.2. Spark的特点(优点) 1.3. Spark组件 1.4. Spark和Hadoop的异同 二.Spark 集群搭建 2.1. Sp ...

  8. mvc登录实例 mysql_spring mvc + mybatis + mysql 调整的一个简单的登录例子

    spring mvc + mybatis + mysql 整合的一个简单的登录例子 今天用spring跟mybatis整合写了一个简单的登录例子,第一次整合,给自己做个笔记,可能注释写的有点少,做的不 ...

  9. BizTalk 2006 简单入门示例程序(附源项目文件下载)

    BizTalk 2006 简单入门示例程序(附源项目文件下载) 为初学BizTalk Server 2006的开发人员,提供一个简单入门的示例程序,包括一个Receive Port.Send Port ...

最新文章

  1. Dokcer启动2个mysql容器
  2. Selenium 2 WebDriver 多线程 并发
  3. 雅特力415开发资料_雅特力在车用电子领域 AT32 MCU应用于ADAS环视系统
  4. 360隔离mysql恢复_MySQL备份与恢复
  5. 通过BizTalk WCF适配器实现异构数据库/系统间的数据同步
  6. 11.29晚 心情 晴 既然选择了Linux这条路就要坚持走下去
  7. MVC个层次之间的联系
  8. 增删改查oracle sql,oracle sql增删改查
  9. 改变翻天覆地 史上最全Fermi架构解读
  10. 【设计模式】-工厂模式->抽象工法模式(源码与类图解析)
  11. OpenCV—python—OCR 通用表格自动校正与识别
  12. 什么Yate开放模式?
  13. 云服务优缺点_云服务器优点和缺点详细介绍
  14. 物联网云平台系统设计
  15. 设置中文字体解决Zabbix5.0监控图表乱码问题
  16. win10桌面右下角网络图标中找不到网络
  17. idr寄存器、_STM32中的IDR和ODR寄存器
  18. UE4场景“郊区”:建模技术,使用Substance纹理化和顶点绘制等
  19. IDEA 使用Git回滚到上一个版本
  20. 2021年化工自动化控制仪表考试资料及化工自动化控制仪表证考试

热门文章

  1. 税收征收管理法律制度
  2. SAP登陆界面TITLE修改方法(Method of SAP Logon GUI Title Modification)
  3. 为何互联网大厂热衷于春节撒红包?谁才是最大赢家?
  4. 怎样把java换主题_java – 如何在切换主题时考虑变化?
  5. java中为什么要用json_Java中使用JSON
  6. 普宁二中高考2021成绩查询,普宁二中2019高考喜报成绩、本科重本上线人数情况...
  7. 计算机网络系统结构分析 pdf,计算机网络(实验三:数据包结构分析).pdf
  8. 一加3t刷机后还卡_一加8T/8/8Pro 氢OS11刷入面具magisk完美root权限超简单教程
  9. 水利水电计算机考试内容及合格标准,水利水电自考本科科目及流程.docx
  10. 关于解释List<Integer> list = new ArrayList<Integer>()