Mybatis的产生

  • idea 的配置
    • idea当中配置好maven工具
    • 1Idea当中配置自动编译
  • Mybatis是什么?
    • Mybatis的执行原理图
    • Mybatis的入门Demo
  • 对象的详解
    • Resources对象
    • SqlSessionFactoryBuild
    • SqlSessionFactory
    • SqlSession对象
  • xxxMapper.xml文件的详解
  • 面向接口发开(应用)
    • 准备数据
      • 引入依赖
    • 核心配置文件
    • 引入xxxMapper.xml
    • 创建接口文件
    • 测试

原生JDBC访问数据库

  • 数据库的连接,使用就创建,不使用就立即释放,对数据库进行频繁的开启和释放,造成了 数据库的资源浪费,并且影响了性能
    . 设想:使用数据库连接池管理数据库连接

  • 将sql语句硬编码到 java 代码中,如果sql语句被修改, 需要重新编译 java 代码,不利于系统维护
    设想:将 sql 语句配置在 xml 文件中,即使 sql 变化,不需要对 java 代码进行重新编译

  • 向 prepareStatement 中设置参数,对占位符位置和设置参数值,硬编码在 java 代码中,不利于系统维护
    设想:将 sql 语句及占位符和参数全部配置在 xml 文件中

  • 从 resultSet 中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护
    设想:将查询的结果集,自动地映射成 java 对象

idea 的配置

idea当中配置好maven工具

1Idea当中配置自动编译

什么是Mybatis框架

  • idea 的配置
    • idea当中配置好maven工具
    • 1Idea当中配置自动编译
  • Mybatis是什么?
    • Mybatis的执行原理图
    • Mybatis的入门Demo
  • 对象的详解
    • Resources对象
    • SqlSessionFactoryBuild
    • SqlSessionFactory
    • SqlSession对象
  • xxxMapper.xml文件的详解
  • 面向接口发开(应用)
    • 准备数据
      • 引入依赖
    • 核心配置文件
    • 引入xxxMapper.xml
    • 创建接口文件
    • 测试

Mybatis是什么?

  • mybatis 是一个持久层框架,是 Apache 下的顶级项目。mybatis 刚开始由 googlecode 托管,再后来托管到 GitHub下
  • 让程序员将主要精力放在 sql 上,通过 mybatis 提供的映射方式,自由灵活地(半自动化,大部分由程序员编写 sql)生成满足需求的 sql 语句
  • mybatis 可以将我们向 prepareStatement 输入参数自动进行映射(输入映射),将查询结果集灵活映射成 java 对象。(输出映射

Mybatis的执行原理图

Mybatis的入门Demo

步骤:

  1. 准备资源: 数据库 test /表:
    对应的实体类: implements Serializable
    序列化:对象的信息以二进制的形式保存数据。没有实现 该接口, 不支持序列化
    反序列化: 将二进制信息转换成对象
  2. 引入相关依赖:
    Mybatis核心依赖:
<!--mybaits-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>

Mysql: 驱动包:
Junit:
Log4j: 日志的记录:
3. 引入Mybatis的核心配置文件: 官网copy。
4. 定义xxxMapper.xml文件。 定义了sql语句
5. 测试
读取核心配置文件。 获得一个输入流。
B:创建一个工厂。 生产对象
C:获得一个SqlSession对象: 类似于Connection 对象。
D:操作 CRUD操作。
E: 释放资源

对象的详解

Resources对象

该对象资源对象,该对象所属的包: ibatis包当中。 该对象能够读取类路径(classes)目录下的资源,获得一个输入流。

SqlSessionFactoryBuild

工厂对象构建者:
获得: new SqlSessionFactoryBuild();
方法: build(inputStream );----->返回一个对象: 工厂对象
作用: 能够根据配置文件信息获得一个工厂对象。

SqlSessionFactory

特点:
工厂对象是一个重量级别的对象。 重量级对象, 对象的创建和对象的销毁都需要消耗很多资源。
工厂对象在一个工程当中只需要一个就可以。 所以工厂在创建完毕之后, 不需要关闭。 生命周期和项目周期一样长。

作用: 生产SqlSession对象:
方法:
openSession();获得一个SqlSession对象, 获得该对象不能自动提交事务。 需要手动调用commit方法进行事务的提交。 rollback事务的回滚操作。

openSession(true); 获得sqlSession对象能够自动进行事务的提交和回滚。

SqlSession对象

对象是一个会话对象。 类似于jdbc当中 Connection对象。 能够进行事务的提交和回滚。
该对象一个线程对应一个对象, 所以该对象不能定义全局对象。 不安全~ 使用完毕之后关闭。

对象能够完成CRUD操作:
selectOne()
selectList();
Insert();
Delete();
Update();

xxxMapper.xml文件的详解

xxxMapper.xml文件当中定义了sql语句:
常用的标签:
Select ,insert , delete ,update标签。

常用属性:

<select id="findStudent" parameterType="java.lang.Integer"  resultType="com.offcn.pojo.Student"  >select * from Student where id=#{id}
</select>

面向接口发开(应用)

开发步骤:
(1)引入依赖:
(2)引入配置文件: SqlMapConfig.xml
(3)编写xxxMapper.xml
(4)编写对应接口文件
(5)Mybatis自动生成接口的实现类: (代理模式)
(6)测试

准备数据

Test ----> teacher 表: 准备对应的实体类:

引入依赖

核心配置文件

引入xxxMapper.xml

<mapper namespace="com.offcn.mapper.TeacherMapper"><!-- Teacher findTeacherById(Integer id); --><select id="findTeacherById" parameterType="int" resultType="teacher">select * from teacher where id=#{id}</select></mapper>

创建接口文件

public interface TeacherMapper {/***  根据id进行查询:* @param id* @return teacher 老师对象:*/Teacher findTeacherById(Integer id);
}

测试

@Test
public void  test() throws Exception{//获得一个会话对象: 给定一个true,链接对象能够自动提交事务SqlSession sqlSession = factory.openSession(true);//就是获得了TeacherMapper接口的实现类: (动态代理模式)//  mapper 所属的类型: .MapperProxy xxxProxy  proxy class// proxy Class is interface implementsTeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);//System.out.println(mapper);Teacher teacher = mapper.findTeacherById(10086);System.out.println(teacher);sqlSession.close();}

接口开发: 接口需要和xxxMapper.xml文件需要进行绑定:
(1)xxxMapper.xml当中的namespace必须制定接口的全限定类名。
(2)配置文件的名称和接口的文件的名称保持一致。存放在同一个目录下。
TeacherMapper.xml TeacherMapper
(3)标签的id 必须和方法名称保持一致。 输入型参数和方法的形式参数保持一致。
方法的返回值和标签的结果类型保持一致。

Mybatis的入门到精通这一篇文章就够了相关推荐

  1. Mybatis从入门到精通(全)

    目录 前言 1. idea软件小技巧 2. mybatis优势 3. mybatis入门项目 3.1 项目具体步骤 3.2 创建数据表 3.3 创建maven项目 3.4 pom.xml配置文件 3. ...

  2. MyBatis从入门到精通(1):MyBatis入门

    作为一个自学Java的自动化专业211大学本科生,在学习和实践过程中"趟了不少雷",所以有志于建立一个适合同样有热情学习Java技术的参考"排雷手册". 最近在 ...

  3. MyBatis从入门到精通 PDF 完整版

    给大家带来的一篇关于MyBatis相关的电子书资源,介绍了关于MyBatis.入门到精通方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小116.8 MB,刘增辉编写,目前豆瓣.亚马逊.当 ...

  4. Spring入门到精通:第一章 基础入门:1.Spring框架概述

    Spring入门到精通:第一章 基础入门:1.Spring框架概述 前言:为什么要学习Spring框架? 为什么要学习Spring框架呐? (1)使用广泛:现在很多的企业都有Spring的影子,不管是 ...

  5. c语言从入门到精通ppt,C语言从入门到精通第1章.ppt

    C语言从入门到精通第1章 1.2.2 认识Turbo C 2.0 1.2.2 认识Turbo C 2.0 ⑴ 菜单栏:包括[File](文件)菜单.[Edit](编辑)菜单.[Run](运行)菜单.[ ...

  6. Mybatis从入门到精通下篇

    Mybatis从入门到精通下篇: 输入类型: 输出类型: ResultMap: 动态sql: if标签: where标签: sql片段: foreach标签: 关联查询: 以订单作为主体: 一对一查询 ...

  7. Mybatis从入门到精通读书笔记

    Mybatis从入门到精通 resultMap resultMap简介 resultMap resultMap简介 P25-P26

  8. MyBatis从入门到精通(一):MyBatis入门

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. MyBatis简介 ​ 2001 ...

  9. Mybatis从入门到精通上篇

    Mybatis从入门到精通上篇: 学习过的持久层框架:DBUtils , Hibernate Mybatis就是类似于hibernate的orm持久层框架. Mybatis介绍: Mybatis是面向 ...

最新文章

  1. modbus通讯失败_技成周报38期 | SMART PLC Modbus通讯、组态、模拟量等常见问题
  2. java判断字符串有中文_JAVA入门之正则表达式判断字符串包含中文
  3. DCGAN in Tensorflow生成动漫人物
  4. c语言自动计算时间,C语言 · 计算时间
  5. java代码 计算器_java代码---------计算器实现
  6. 【华为云技术分享】Linux内核编程环境 (2)
  7. java9 多版本兼容jar_Java 9 多版本兼容 jar 包
  8. linux写语句自动执行一次,Linux系统下自动执行指定任务 cron
  9. PyCharm无法找到已安装的Python类库的解决方法
  10. 关于macos新功能——控制中心的一些事
  11. 威纶触摸屏和台达b2伺服通讯,含程序案例资料
  12. 王佩丰数据透视表(六到十一讲)
  13. SYSTEM大法好!!!
  14. CreateCompatibleDC CreateCompatibleBitmap SelectObject详解
  15. 常见RISC-V介绍
  16. chrome使用脚本修改组策略_允许新版本 Chrome 安装第三方网站的脚本以及扩展的方法...
  17. 【TensorFlow】人脸识别OpenFace、Face-recognition、Insightface和FaceNet源码运行
  18. 计算机公式复制填充的操作,计算机公式复制的方法施舍呢?
  19. LES06 :C++线程与智能指针
  20. 【嵌入式STM32-05】STM32 外部中断 EXTI 基本原理|库函数程序代码|寄存器

热门文章

  1. RTT线程管理篇——启动调度器函数
  2. docker可以把应用及其相关的_声学中的相干性及其相关应用!
  3. SQL优化——IN和EXISTS谁的效率更高
  4. 最完整的MySQL规范
  5. 一文详解Kafka API
  6. 工商银行:应用多k8s集群管理及容灾实践
  7. 等保数据备份和恢复关键点,这些你该知道!
  8. 【华为云技术分享】一行代码就能写一个日志打印组件,你信吗?为你揭晓LiteOS中日志打印组件的核心
  9. 这个 Python 库有必要好好学学
  10. 窥探日志的秘密【华为云分享】