Mybatis学习笔记——第一天

Mybatis学习笔记—第一天

Mybatis笔记 第一天

一.引言

1. 现有Jdbc的缺陷

  1. 代码冗余(相似度90%) , 只有sql命令不同
  2. 参数的绑定 和 实体类对象的封装(数据封装) 需要手工完成
  3. jdbc技术没有提供”连接池”功能
  4. 没有提供”缓存”机制

2. Mybatis框架

  1. 是一种基于java的框架 , 对jdbc代码的封装 , 主要优化数据的持久化操作 , 提出
    了一种新的方式完成dao接口的实现
    2)实现机制

在这里插入图片描述

3. 搭建环境

1) 引入jar包

   Mybatis-3.2.2.jar   ojdbc5.jar    log4j.jar(不是必须的,做日志输出的)

2) 引入配置文件 — src

   Mybatis-config.xml(文件名随意)   log4j.properties 

3) 初始化配置 – 写mybatis-config.xml

在这里插入图片描述

二.第一个Mybatis程序 — 查询数据

1. 准备

  1. 表 2) 实体类 3) dao接口

2. 写映射文件 TeacherDaoImpl.xml

在这里插入图片描述

3. 注册映射文件 – 将自定义的映射文件注册到配置文件里

在这里插入图片描述

4. 测试代码 — service层代码

1) mybatis里的核心类

  ① SqlSessionFactoryBuilder : 是读取mybatis框架配置文件mybatis-config的工具类
         (获取框架的运行环境) , 并将读到的内容封装成对象存储下来
  ② SqlSessionFactory : 当前类型的对象里封装了mybatis配置文件的信息
  ③ SqlSession : 将mapper文件翻译成接口的实现类,并创建对象返回 ; session里封装
         了jdbc中的Connection对象 ( 一一对应 ) 

2) 代码

  ① 创建SqlSessionFactoryBuilder对象
     SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  ② 获取读文件的io流对象
     Reader  reader = Resources.getResourceAsReader(“文件的路径--从src下开始写”) ;
  ③ 获取SqlSessionFactory对象
     SqlSessionFactory factory = builder.build( reader );  //开始读文件并封装
  ④ 获取SqlSession
     SqlSession session = factory.openSession();
  ⑤ 获取接口的实现类对象
     XxxDao  dao = session.getMapper( XxxDao.class );

三.其他DML功能 ( insert update delete )

注意: 功能涉及到增删改任一操作 , 都必须手动显示commit

1. 删除功能 delete

2. 更新功能update

在这里插入图片描述

3. 插入功能 insert

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200106221024326.png)

四.Dao层的其他功能 — 查所有

1. 方法声明

   public List<Teacher> queryAll() ;

2. 映射文件

  <select id=”queryAll”  resultType=”集合里一个元素的类型 entity.Teacher”>
     Select * from teacher 
  </select>

五.封装MybatisUtil工具类

  1. Mybatis启动时需要读取配置文件(只读取一次即可) , 需要将代码定义在静态代码块
  2. SqlSessionFactory对象里封装了配置文件信息 , 是重量级组件(内存占用多, 功能强大,
    运行效率低 , 线程安全) ,一般应用中只会创建一个这样的对象.
  3. SqlSession与Connection一一对应的 , 线程不安全(不能在多个线程间共享,需要为每一
    个线程单独分配一个session — ThreadLocal )

六.映射文件的特殊写法 — 查询

1. 多参查询 – 省略parameterType

 注意:方法的形参名不能长时间保留,在编译过程中丢失,不能在映射文件中使用
 解决:
 1) 通过参数的下标来指定获取哪一个参数的值
   ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200106222410501.png)
   ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200106222410779.png)
 2) 通过注解为参数定义可以长久保留的名字( 至少出现在字节码文件里 )

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值