Java持久层之MyBatis:03_MyBatis查询


MyBatis框架执行过程

  • 配置mybatis的全局配置文件:SqlMapConfig.xml:名称不固定,但是在实际开发中没有必要修改全局配置文件的文件名:位置与名称都固定不变
  • 通过全局配置文件,加载mybatis运行环境,创建SqlSessionFactory会话工厂:SqlSessionFactory是实际使用时按单例方式
  • 通过SqlSessionFactory创建SqlSessionSqlSession是一个面向用户接口(提供操作数据的方法与属性):实现对象是线程不安全的:建议SqlSession应用场合在方法体内
  • 调用SqlSession的方法操作数据:如果需要提交事务,需要执行SqlSessioncommit()方法
  • 释放资源,关闭SqlSession

MyBatis开发dao的方法

原始dao的开发方法

  • 需要程序猿编写dao接口与接口实现类
  • 需要在dao接口实现类中注入一个SqlSessionFactory会话工厂

mapper代理的开发方法

  • 只需要程序猿编写mapper接口(就是dao接口)
  • 程序猿在编写mapper.xml(映射配置文件)和mapper.java(mapper接口)需要遵循一个开发规范:
    (1) mapper.xml中的namespace属性值就是mapper.java的全限定类名
    (2) mapper.xml中的statement的id和mapper.java中方法名一致
    (3) mapper.xml中的statement的parameterType指定输入参数类型和mapper.java的方法输入的参数类型一致
    (4) mapper.xml中statement的resultType指定输出结果的类型和mapper.java的方法返回值一致
  • 补充: 包装pojo类型:将各种各样的简单的pojo类型包在一起

输入映射 & 输出映射

  • 输入映射:parameterType指定输入参数类型可以是简单类型、pojo、hashmap、…
  • 对于综合查询:建议parameterType使用包装的pojo,有利用系统扩展
  • 输出映射:
    (1) resultType:查询得到的结果集的列名与resultType指定的pojo的属性名一致才能映射成功
    (2) resultMap:①完成一些高级映射;②如果查询得到的结果集的列名与pojo的属性名不一致,则需要resultMap设置列名与属性名之间的对应关系(映射关系),可以完成映射
  • 高级映射:
    (1) 将关联查询的列映射到一个pojo属性中:一对一
    (2)将关联查询的列映射到一个List<pojo>中:一对多

动态SQL

  • if判断(掌握)
  • where标签可以去掉第一个AND
  • foreach可以操作集合与数组
  • SQL片段

高级映射

  • 实现一对一查询,一对多查询,多对多查询
  • 延迟加载
  • 查询缓存
    (1) 一级缓存
    (2) 二级缓存:了解mybatis二级缓存使用场景
  • mybatis与spring整合(掌握)

在这里插入图片描述

在这里插入图片描述
多个订单可以有一个用户创建:多对一

高级映射

查询缓存

MyBatis与Spring整合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值