javaweb学习week3

javaweb学习

五.MySQL

20.多表查询

(7)行子查询

子查询返回的值是一行(可以是多列)
常用的操作符:= <> in not in

(8)表子查询

子查询返回的结果是多行多列,常作为临时表
常用的操作符:in

21.事务

(1)介绍

事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败
注意:默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐形的提交事务

(2)操作

事务控制:
请添加图片描述

(3)四大特性(ACID)

原子性:事务是不可分割的最小单元,要么全部成功,要么全部失败
一致性:事务完成时,必须所有的数据都保持一致状态
隔离性:数据库系统提供的隔离机制,保证事务在不收外部并发操作影响的独立环境下运行
持久性:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

22.索引

(1)介绍

索引是帮助数据库高效获取数据的数据结构
如:
请添加图片描述

优点:提高查询效率,降低数据库的IO成本,降低CPU消耗
缺点:索引会占用存储空间,降低了insert、update、delete的效率

(2)结构

MySQL数据库支持的索引结构有很多,如:hash索引,full-text索引
默认是B+Tree结构组织的索引
B+Tree(多路平衡搜索树):
请添加图片描述

特点:

  1. 每一个节点,可以存储多个key(有n个key,就有n个指针)
  2. 所有的数据都存储在叶子节点,非叶子节点仅用于索引数据
  3. 叶子节点形成了一颗双向链表,便于数据的排序及区间范围查询
(3)操作语法

语法:
请添加图片描述

注意:

  1. 主键字段,在建表时,会自动创建主键索引
  2. 添加唯一约束时吗,数据库实际上会添加唯一索引

六.Mybatis

1.介绍

mybatis是一款优秀的持久层框架,用于简化JDBC的开发
官网:https://mybatis.net.cn/

2.入门程序

步骤:
①准备工作(创建springboot工程,数据库,实体类):
请添加图片描述

②引入mybatis的相关依赖,配置mybatis(配置数据库连接信息):
请添加图片描述

③编写sql语句(注解/XML):
请添加图片描述

④单元测试:
请添加图片描述

3.配置SQL提示

默认在mybatis中编写SQL语句是不识别的,可以做以下操作:
请添加图片描述

问题:表名不被识别
原因:idea和数据库没有建立联系,不识别表信息
解决:在idea中配置MySQL数据库连接
请添加图片描述

4.JDBC

JDBC:是使用java语言操作关系型数据库的一套API
请添加图片描述

本质:

  1. sun公司定义的一套操作所有关系型数据库的规范,即接口
  2. 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  3. 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类

5.数据库连接池

数据库连接池是个容器,负责分配,管理数据库连接
它允许应用程序重复使用一个现有的数据库连接,而不是重新创建一个
释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏
标准接口:DataSource:

  1. 官方(sun)提供的数据库连接池接口,由第三方组织实现此接口
  2. 功能:获取连接

常见产品(Hikari是springboot默认的):
请添加图片描述

切换Druid数据库连接池:
请添加图片描述

6.lombok工具包介绍

lombok是一个实用的java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并自动生成日志变量,简化java开发:
请添加图片描述

注意:lombok会在编译时,自动生成java代码,我们使用lombok时,还需要安装一个lombok的插件(idea自带)

7.基础操作-环境准备

  1. 准备数据库表
  2. 创建一个新的springboot项目,选择引入对应的起步依赖(mybatis、MySQL)
  3. application.properties中引入数据库连接信息(数据库四要素)
  4. 创建对应的实体类
  5. 准备Mapper接口

8.删除

接口方法:
请添加图片描述

注意:如果mapper接口方法形参只有一个普通类型的参数,#{…}里面的属性名可以随便写

预编译SQL

日志输出:可以在application.properties中,打开mybatis的日志,并指定输出到控制台:
请添加图片描述

日志:
请添加图片描述

其中:?是占位符,具体数据是下面的parameter,update表示改变的数据数
预编译SQL的优势:性能更高,更安全(防止SQL注入)
SQL注入是通过操作输入的数据来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法
参数占位符:

  1. #{…}
    请添加图片描述

  2. ${…}
    请添加图片描述

9.新增

接口方法:
请添加图片描述

主键返回

描述:在数据添加成功后,需要获取插入数据库数据的主键。如:添加套餐数据时,还需要维护套餐菜品关系表数据
实现:
请添加图片描述

9.更新

接口方法:
请添加图片描述

10.查询

(1)根据ID查询

接口方法:
请添加图片描述

实体类属性名和数据库表查询返回的字段名一致,mybatis会自动封装
如果实体类属性名和数据库表查询返回的字段名不一致,不能自动封装:
请添加图片描述

解决方法:
①给字段起别名,让别名与实体类表属性一致:
请添加图片描述

②通过@Results,@Result注解手动映射封装:
请添加图片描述

③在application.properties中开启mybatis的驼峰命名自动映射开关:
请添加图片描述

(2)条件查询

接口方法:
请添加图片描述

其中:concat是字符串拼接函数
参数名说明:

  1. 在springboot的2.x版本:
    请添加图片描述

  2. 在springboot的1.x版本/单独使用mybatis:
    请添加图片描述

11.XML映射文件

规范:

  1. XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
  2. XML映射文件的namespace属性为Mapper接口全类名一致
  3. XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致

xml配置文件(详见mybatis官网):
请添加图片描述

idea插件:MyBatisX
请添加图片描述

XML配置文件适用于复杂sql功能

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值