1. 步骤:

  • (1). 加包
  • (2). 编写db.properties;编写conf.xml,将db.properties加入到conf.xml;引入别名
  • (3). 建立实体类
  • (4). 编写sql操作对应的***Mapper.xml文件
  • (5). 将sql操作对应的***Mapper.xml文件注册到conf.xml文件中
  • (6). 编写MyBaitsUtils
  • (7). 测试

2. 详细步骤

  • (1). 加包

  

  • (2). 编写db.properties;
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis1
username=root
password=lfdy

  • 编写conf.xml,将db.properties加入到conf.xml;
<!--  加载db.properties  这段必须放在上面--><properties resource="db.properties"></properties><!-- 配置连接数据库信息 --><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${driverClass}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments>

  • 引入别名
<!-- 加入别名 --><typeAliases><package name="com.atguigu.mybatis.domain"/></typeAliases>

  • (3). 建立实体类

package com.atguigu.mybatis.domain;import java.util.List;/*** @author hp**/
public class Classes {private int id;private String name;private Teacher teacher;private List<Student> students;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}public List<Student> getStudents() {return students;}public void setStudents(List<Student> students) {this.students = students;}public Classes(int id, String name, Teacher teacher, List<Student> students) {super();this.id = id;this.name = name;this.teacher = teacher;this.students = students;}public Classes() {super();}@Overridepublic String toString() {return "Classses [id=" + id + ", name=" + name + ", teacher=" + teacher + ", students=" + students + "]";}}

View Code

package com.atguigu.mybatis.domain;/*** @author hp**/
public class Teacher {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Teacher(int id, String name) {super();this.id = id;this.name = name;}public Teacher() {super();}@Overridepublic String toString() {return "Teacher [id=" + id + ", name=" + name + "]";}}

View Code

package com.atguigu.mybatis.domain;/*** @author hp**/
public class Student {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Student(int id, String name) {super();this.id = id;this.name = name;}public Student() {super();}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}}

View Code

  • (4). 编写sql操作对应的***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.atguigu.mybatis.mapper.ClassMapper">
  <!-- 方式1:嵌套结果 --><select id="getClass" parameterType="int" resultMap="ClassResultMap3">select * from class c,teacher t,student s where c.teacher_id = t.t_id and c.c_id = s.class_id and c.c_id = #{id}</select><resultMap type="Classes" id="ClassResultMap3"><id property="id" column="c_id"/><result property="name" column="c_name"/><association property="teacher" column="teacher_id" javaType="Teacher"><id property="id" column="t_id"/><result property="name" column="t_name"/></association><collection property="students" ofType="Student"><id property="id" column="s_id"/><result property="name" column="s_name"/></collection></resultMap>

        

<!-- 嵌套chaxun查询 -->
    <select id="getClass2" parameterType="int" resultMap="ClassResultMap2">
        select * from class where c_id = #{id}
    </select>
    <resultMap type="Classes" id="ClassResultMap2">
      <id property="id" column="c_id"/>
    <result property="name" column="c_name"/>
    <association property="teacher" column="teacher_id" javaType="Teacher" select="getTeacher2"/>
    <collection property="students" column="c_id" ofType="Student" select="getStudent2"/>
    </resultMap>

    <select id="getTeacher2" parameterType="int" resultType="Teacher">
      select t_id id,t_name name from teacher where t_id=#{id}
    </select>

    <select id="getStudent2" parameterType="int" resultType="Student">
      select s_id id,s_name name from student where class_id=#{id}
    </select>

</mapper>

  • (5). 将sql操作对应的***Mapper.xml文件注册到conf.xml文件中
<!-- 注册sql映射的mapper文件 --><mappers><mapper resource="com/atguigu/mybatis/mapper/ClassMapper.xml" /></mappers>

  • (6). 编写MyBaitsUtils
package com.atguigu.mybatis.test;import java.io.InputStream;import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MyBatisUtils {public static SqlSessionFactory getFactory(){String resource = "config.xml";InputStream is = MyBatisUtils.class.getClassLoader().getResourceAsStream(resource);SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);return factory;}}

  • (7). 测试
package com.atguigu.mybatis.test;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.atguigu.mybatis.domain.*;/*** @author hp**/
public class MyBatisTest {public static void main(String[] args) {SqlSessionFactory factory = MyBatisUtils.getFactory();SqlSession session = factory.openSession();String statement = "com.atguigu.mybatis.mapper.ClassMapper.getClass";Classes c=  (Classes) session.selectOne(statement,1);System.out.println(c);session.close();}}

转载于:https://www.cnblogs.com/lfdingye/p/6444189.html

MyBatis开发入门二:一对多连表查询相关推荐

  1. Pascal游戏开发入门(二):渲染图片

    Pascal游戏开发入门(二):渲染图片 渲染静态图片 新增一个Texture,然后Render出来 创建Texture,并获取尺寸 procedure TGame.Init(title: strin ...

  2. java游戏开发入门(二) - 菜单

    java游戏开发入门(二) - 菜单 前言 编码 主菜单 游戏内菜单(按下ESC后出现,并会暂停游戏) 效果展示 主菜单 游戏内菜单 完整代码 完整项目 前言   上一章我们创建了一个600x600的 ...

  3. linux内核开发入门二(内核KO模块介绍、开发流程以及注意事项)

    linux内核开发入门二(内核KO模块介绍.开发流程以及注意事项) 一.什么是内核模块 内核模块:ko模块(Kernel Object Module)是Linux内核中的可加载模块,它可以动态地向内核 ...

  4. MySQL从入门到精通:多表查询的灵活运用_02

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一揽芳华. 如果小伙伴们觉得我的文章有点 feel ,那就点个赞再走哦. 上一篇:MySQL从入门到精通:基本语法介绍与使用_01 下一篇:MySQL从 ...

  5. FreeSql (二十)多表查询 WhereCascade

    WhereCascade 多表查询时非常方便,有了它可以很轻松的完成类型软删除,租户条件的功能. IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseCon ...

  6. Vue开发入门(二) | 说说Vue全家桶有哪些~

    全家桶,顾名思义,就是一个系列,可以组合开发成完整强大的Vue项目 前言: *Vue两大核心思想:组件化和数据驱动. 组件化:把整体拆分为各个可以复用的个体 数据驱动:通过数据变化直接影响bom展示, ...

  7. 【一周入门MySQL—3】多表查询、子查询、常用函数

    多表查询.子查询.常用函数 一.多表查询 多表查询:通过不同表中具有相同意义的关键字段,将多个表进行连接,查询不同表中的字段信息. 对应关系 一对一:比如下图的人员信息表和人员身份证对应表,一个员工只 ...

  8. 数据库SQL语言从入门到精通--Part 6--单表查询(快来PICK)

    数据库从入门到精通合集(超详细,学习数据库必看) 查询操作是SQL语言中很重要的操作,我们今天就来详细的学习一下. 一.数据查询的语句格式 SELECT [ALL|DISTINCT] <目标列表 ...

  9. 二、MySQL——多表查询内容

    目录 -- 多表查询 -- 笛卡尔积 -- 内连接演示 -- 外连接演示 -- 自连接 子查询 -- 标量子查询 -- 列子查询 -- 行子查询 -- 表子查询 多表查询总结 -- 多表查询练习 -- ...

最新文章

  1. 脚本语言lua笔记(5)c++调用lua
  2. 数据可视化(一)-Matplotlib简易入门
  3. myeclipse如何修改tomcat的timeout
  4. 单链表——判断两个单链表(无头节点)是否相交,如果相交,返回单链表的第一个结点
  5. php判断外链,php检查字符串中是否有外链的方法
  6. WPF中Grid实现网格,表格样式通用类(转)
  7. 设计一个类代表二维空间的一个圆。_平面设计基础——点、线、面
  8. 乾坤大挪移,巧迁数据到proxmox平台
  9. 帆软独家:数字化转型打造企业数据战斗力
  10. 训练日志 2019.4.27
  11. 【C语言】将输入的10个数排序
  12. pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
  13. 普林斯顿微积分读本篇二:三角学
  14. 辛格函数sinc(x)和抽样函数Sa(t)
  15. PHP 计算个人所得税(两种方式)
  16. ESP8266-Arduino编程实例-TTP223 电容式触摸传感器驱动
  17. 谈一谈APP支付失败的处理
  18. K8S搭建自动化部署环境(三)Jenkins下载、安装和启动
  19. HCIP 综合实验(一)
  20. 解析HTTPS加密原理

热门文章

  1. git revert和git reset的区别
  2. python 多线程日志切割+日志分析
  3. Android 设计模式:(三)装饰者模式 —— 装饰对象
  4. 数据还原到指定时间点的处理示例
  5. ubuntu 10.04 安装eclipse及其中文语言包
  6. PostgreSQL学习笔记(1)
  7. 单列索引和复合索引的使用
  8. log4j2配置实例[按小时记录日志文件]
  9. hibernate和struts2实现分页功能
  10. Hello World