![c3f3fa9b04a04608fc4ae76d21bfb708.png](https://i-blog.csdnimg.cn/blog_migrate/ec5d0bcb9e1ebcec3cb4b8edf4ed5052.jpeg)
MyBatis简介
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
当前,最新版本是MyBatis 3.5.4 ,其发布时间是2020年2月4日
1.Mybatis开源免费框架.原名叫iBatis,2010在googlecode,2013年迁移到github
2.作用:数据访问层框架、底层是对JDBC的封装
3.mybatis优点之一
使用mybatis时不需要编写实现类,只需要写需要执行的sql命
4.框架:软件的半成品.未解决问题制定的一套约束,在提供功能基础上进行扩充.
5.框架中一些不能被封装的代码(变量),需要使用框架者新建一个xml文件,在文件中添加变量内容.
5.1需要建立特定位置和特定名称的配置文件.
5.2需要使用xml解析技术和反射技术.
6.常用概念
6.1类库:提供的类没有封装一定逻辑.
举例:类库就是名言警句,写作文时引入名言警句
6.2框架:区别与类库,里面有一些约束.
举例:框架是填空题
环境搭建详解1.全局配置文件中内容
1.1<transactionManager/>type属性可取值
1.1.1JDBC,事务管理使用JDBC原生事务管理方式
1.1.2MANAGED把事务管理转交给其他容器.原生JDBC事务
setAutoMapping(false);
1.2<dataSouce/>type属性
1.2.1POOLED使用数据库连接池
1.2.2UNPOOLED不实用数据库连接池,和直接使用JDBC一样
1.2.3JNDI:java命名目录接口技术.
![f5252509baadff88cb8aa4ea3924e842.png](https://i-blog.csdnimg.cn/blog_migrate/1536a85dae91dce53aca5551c9727a95.jpeg)
数据库连接池1.在内存中开辟一块空间,存放多个数据库连接对象.
2.JDBCTomcatPool,直接由tomcat产生数据库连接池.
3.1active状态:当前连接对象被应用程序使用中
3.2Idle空闲状态:等待应用程序使用MyBatis的配置
MyBatis框架和其他绝大部分框架一样,需要一个配置文件,其配置文件大致如下:
<?
MyBatis的主要成员
- Configuration
MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中 - SqlSession
作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能 - Executor
MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护 - StatementHandler
封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等 - ParameterHandler
负责对用户传递的参数转换成JDBC Statement 所对应的数据类型 - ResultSetHandler
负责将JDBC返回的ResultSet结果集对象转换成List类型的集合 - TypeHandler
负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换 - MappedStatement
MappedStatement维护一条<select|update|delete|insert>节点的封装 - SqlSource
负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回 - BoundSql
表示动态生成的SQL语句以及相应的参数信息
以上主要数据库操作基本都会涉及,在SQL操作中重点需要关注的是SQL参数何时被设置以及结果集怎么转换为JavaBean对象,这两个过程正好对应StatementHandler和ResultSetHandler类中的处理逻辑。
MyBatis 实现新增
1. 概念复习
1.1 功能:从应用程序角度出发,软件具有哪些功能.
1.2 业务:完成功能时的逻辑.对应 Service 中一个方法
1.3 事务:从数据库角度出发,完成业务时需要执行的 SQL 集合,统 称一个事务.
1.3.1 事务回滚.如果在一个事务中某个 SQL 执行事务,希望回 归到事务的原点,保证数据库数据的完整性.
2. 在 mybatis 中默认是关闭了 JDBC 的自动提交功能
2.1 每一个 SqlSession 默认都是不自动提交事务.
2.2 session.commit()提交事务.
2.3 openSession(true);自动提交.setAutoCommit(true);
3. mybatis 底层是对 JDBC 的封装.
3.1 JDBC 中 executeUpdate()执行新增,删除,修改的 SQL.返回值 int, 表示受影响的行数.
3.2 mybatis 中<insert> <delete> <update>标签没有 resultType 属性, 认为返回值都是 int4. 在 openSession()时 Mybatis 会创建 SqlSession 时同时创建一个 Transaction(事务对象),同时 autoCommit 都为 false
4.1 如果出现异常,应该 session.rollback()回滚事务.
5. 实现新增的步骤
5.1 在 mapper.xml 中提供<insert>标签,标签没有返回值类型
<
5.2 通过 session.insert()调用新增方法
int
![d3fe9058edbf67ed11c38e5034fb0d6d.png](https://i-blog.csdnimg.cn/blog_migrate/da85df5e59e429814bdcca0eb5e164a2.jpeg)
MyBatis 实现修改
1. 在 mapper.xml 中提供<update>标签
<
2. 编写代码
People
mybatis 实现删除
1. 在 mapper.xml 提供<delete>标签
<delete id="del" parameterType="int">
delete from people where id = #{0}
</delete>
2. 编写代码
int
关注24小时编程自习室,一起学习吧
欢迎留言讨论哦