Mybatis的入门到精通这一篇文章就够了
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
步骤:
- 准备资源: 数据库 test /表:
对应的实体类: implements Serializable
序列化:对象的信息以二进制的形式保存数据。没有实现 该接口, 不支持序列化
反序列化: 将二进制信息转换成对象 - 引入相关依赖:
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的入门到精通这一篇文章就够了相关推荐
- Mybatis从入门到精通(全)
目录 前言 1. idea软件小技巧 2. mybatis优势 3. mybatis入门项目 3.1 项目具体步骤 3.2 创建数据表 3.3 创建maven项目 3.4 pom.xml配置文件 3. ...
- MyBatis从入门到精通(1):MyBatis入门
作为一个自学Java的自动化专业211大学本科生,在学习和实践过程中"趟了不少雷",所以有志于建立一个适合同样有热情学习Java技术的参考"排雷手册". 最近在 ...
- MyBatis从入门到精通 PDF 完整版
给大家带来的一篇关于MyBatis相关的电子书资源,介绍了关于MyBatis.入门到精通方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小116.8 MB,刘增辉编写,目前豆瓣.亚马逊.当 ...
- Spring入门到精通:第一章 基础入门:1.Spring框架概述
Spring入门到精通:第一章 基础入门:1.Spring框架概述 前言:为什么要学习Spring框架? 为什么要学习Spring框架呐? (1)使用广泛:现在很多的企业都有Spring的影子,不管是 ...
- c语言从入门到精通ppt,C语言从入门到精通第1章.ppt
C语言从入门到精通第1章 1.2.2 认识Turbo C 2.0 1.2.2 认识Turbo C 2.0 ⑴ 菜单栏:包括[File](文件)菜单.[Edit](编辑)菜单.[Run](运行)菜单.[ ...
- Mybatis从入门到精通下篇
Mybatis从入门到精通下篇: 输入类型: 输出类型: ResultMap: 动态sql: if标签: where标签: sql片段: foreach标签: 关联查询: 以订单作为主体: 一对一查询 ...
- Mybatis从入门到精通读书笔记
Mybatis从入门到精通 resultMap resultMap简介 resultMap resultMap简介 P25-P26
- MyBatis从入门到精通(一):MyBatis入门
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. MyBatis简介 2001 ...
- Mybatis从入门到精通上篇
Mybatis从入门到精通上篇: 学习过的持久层框架:DBUtils , Hibernate Mybatis就是类似于hibernate的orm持久层框架. Mybatis介绍: Mybatis是面向 ...
最新文章
- modbus通讯失败_技成周报38期 | SMART PLC Modbus通讯、组态、模拟量等常见问题
- java判断字符串有中文_JAVA入门之正则表达式判断字符串包含中文
- DCGAN in Tensorflow生成动漫人物
- c语言自动计算时间,C语言 · 计算时间
- java代码 计算器_java代码---------计算器实现
- 【华为云技术分享】Linux内核编程环境 (2)
- java9 多版本兼容jar_Java 9 多版本兼容 jar 包
- linux写语句自动执行一次,Linux系统下自动执行指定任务 cron
- PyCharm无法找到已安装的Python类库的解决方法
- 关于macos新功能——控制中心的一些事
- 威纶触摸屏和台达b2伺服通讯,含程序案例资料
- 王佩丰数据透视表(六到十一讲)
- SYSTEM大法好!!!
- CreateCompatibleDC CreateCompatibleBitmap SelectObject详解
- 常见RISC-V介绍
- chrome使用脚本修改组策略_允许新版本 Chrome 安装第三方网站的脚本以及扩展的方法...
- 【TensorFlow】人脸识别OpenFace、Face-recognition、Insightface和FaceNet源码运行
- 计算机公式复制填充的操作,计算机公式复制的方法施舍呢?
- LES06 :C++线程与智能指针
- 【嵌入式STM32-05】STM32 外部中断 EXTI 基本原理|库函数程序代码|寄存器