一、mysql数据库的补充学习
1.事务:
一组操作的集合,把所有操作作为一个整体一起向系统提交或撤销操作请求,保证这些操作要么一起成功,要么一起失败。比如说下面图片中两个执行语句就应该作为一个事务去执行,不能发生部门删除了,而与部门相关的员工还没删除的情况。
Mysql中默认一条语句就是一个事务,我们想让上面的两条语句为一个事务去执行,需要对事务进行控制
2.事务控制
- 开启事务:在执行操作之前,开启事务
start transaction;
或者是 begin
- 提交事务:如果这组所有操作都执行成功,就可以提交事务,一旦提交对数据库的改变是永久的
commit;
- 回滚事务:如果这组操作中有操作执行失败,就应该执行回滚,恢复到执行这组操作之前的原始数据,回滚对数据库的改变也是永久的
rollback;
3.事务的四大特性ACID
- 原子性:事务是不可分割的最小单元,要么全部成功,要么全部失败
- 一致性:事务完成时,必须使所有的数据都保持一致状态
- 隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
- 持久性:事务一旦提交或回滚,它对数据库中的数据改变就是永久的
4.索引index
索引是帮助数据库高效获取数据的数据结构,mysql数据库支持的索引结构有很多,比如:Hash索引、B+Tree索引、Full-Text索引等,我们平时说的索引默认指B+Tree组织结构的索引。
数据库会给主键和有唯一约束的字段自动添加索引,主键索引是所有索引中性能最高的
- 优点:提高数据查询的效率,降低数据库的IO成本;通过索引列对数据进行排序,降低数据排序的成本,降低CPU消耗
- 缺点 :索引占用存储空间;降低insert、update、delete的效率,因为在进行增删改的操作时除了更改数据库之外还要维护索引的数据结构
- 创建索引
create index 索引名称 on 表名(字段名)
- 查看索引
show index from 表名
- 删除索引
drop index 索引名称 on 表名
二、MyBatis
MyBatis是一个持久层框架,用于简化JDBC的开发
1. mybatis快速搭建
- 在navicat(或者其他软件都行)中创建数据库
如:创建了一个book_manager数据库
- 配置mybatis依赖和数据库驱动
- 创建pojo类,与数据库相对应
- 创建MyBatis核心配置文件,进行数据库连接以及加载sql映射文件;创建sql映射文件,统一管理sql语句
- 编码实现sql语句:
2.Mapper代理开发
上面使用selectList(“namespace.id”)这种方法去调用sql语句需要我们去寻找对应的id名,会有点麻烦,我们可以采用Mapper代理开发来解决这个问题
- 定义与sql映射文件同名的Mapper接口,将Mapper接口和Sql映射文件放在同一个目录下
- 设置sql映射文件中的namespace属性为Mapper接口全限定名
- 使用包扫描简化配置文件中sql映射文件的加载
- 在Mapper接口中定义方法,方法名就是映射文件中sql语句的id,保持参数类型和返回值类型在接口和映射文件中一致
- 编码实现
3.mybatis核心配置文件
4.resultMap
当数据库的列名和实体名字对应不上时,可以用resultMap去完成映射,完成自动封装数据
5.查询
也可以去掉otherwise标签,将外面的where变为标签,避免为空时的报错情况
6.添加以及修改
7.删除