JDBC
-
Java DataBase connectivity: Java数据库连接
-
学习JDBC主要学习的是如何通过Java代码执行SQL语句
-
JDBC是Sun公司提供的一套专门用于Java语言和数据库软件进行连接的API(Application Programma Interface应用程序编程接口),Sun公司为了避免Java程序员每一种数据库软件都学习一套全新的方法, Sun公司通过JDBC接口定义好了方法名,让各个数据库的厂商根据此方法名写各自的实现类(驱动), 这样的话Java程序员只需要学会JDBC接口中方法的调用即可访问任何数据库软件, 甚至换数据库时代码都不需要改变. 这样的话大大提高了开发效率.
-
Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/empdb?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false", "root","root"); System.out.println("连接对象:"+conn); //2. 创建执行SQL语句的对象 Statement s = conn.createStatement(); //3. 执行SQL语句 execute=执行 s.execute("create table jdbct1(name varchar(20),age int)"); //4. 关闭资源 conn.close(); System.out.println("执行完成!");
spring mvc工作流程
1、用户发送请求至前端控制器DispatcherServlet。
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView。
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、ViewReslover解析后返回具体View.
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户。
jdk1.8新特性
-
对一些数据结构进行优化
-
Lambda表达式
-
函数式接口
-
*方法引用和构造器调用
-
Stream API
-
接口中的默认方法和静态方法
-
新时间日期API
-
Optional
在jdk1.8中对hashMap等map集合的数据结构优化。hashMap数据结构的优化 原来的hashMap采用的数据结构是哈希表(数组+链表),hashMap默认大小是16,一个0-15索引的数组,如何往里面存储元素,首先调用元素的hashcode 方法,计算出哈希码值,经过哈希算法算成数组的索引值,如果对应的索引处没有元素,直接存放,如果有对象在,那么比较它们的equals方法比较内容 如果内容一样,后一个value会将前一个value的值覆盖,如果不一样,在1.7的时候,后加的放在前面,形成一个链表,形成了碰撞,在某些情况下如果链表 无限下去,那么效率极低,碰撞是避免不了的 加载因子:0.75,数组扩容,达到总容量的75%,就进行扩容,但是无法避免碰撞的情况发生 在1.8之后,在数组+链表+红黑树来实现hashmap,当碰撞的元素个数大于8时 & 总容量大于64,会有红黑树的引入 除了添加之后,效率都比链表高,1.8之后链表新进元素加到末尾 ConcurrentHashMap (锁分段机制),concurrentLevel,jdk1.8采用CAS算法(无锁算法,不再使用锁分段),数组+链表中也引入了红黑树的使用
MyBatis框架
-
此框架是目前最流行的数据持久层框架, 框架可以帮助我们生成JDBC代码, 从而提高开发效率 .使用此框架程序员只需要通过注解或xml配置文件写好需要执行的SQL语句, Mybatis框架会自动生成对应的JDBC代码
-
如何使用Mybatis框架
-
创建boot03工程, 打钩3个
-
Web->Spring Web
-
SQL-> Mybatis Framework
-
SQL-> MySQL Driver
-
-
创建完工程后需要在application.properties 配置文件中添加连接数据库的信息
-
数据库中的五大约束包括:
1.主键约束(Primay Key Coustraint) 唯一性,非空性;
2.唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个;
3.默认约束 (Default Counstraint) 该数据的默认值;
4.外键约束 (Foreign Key Counstraint) 需要建立两表间的关系;
5.非空约束(Not Null Counstraint):设置非空约束,该字段不能为空。
6.检查约束(可说可不说)
事务的4个特性:ACID特性
-
原子性
-
一致性
-
隔离性
-
永久性
端口号
oracle:1521
redis:6379
nacos端口号:8848
mysql:3306
sqlserver:1433
es:9200
有哪四种sql
1. 数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
DDL操作是隐性提交的!不能rollback
2 .数据操纵语言DML
数据操纵语言DML主要有三种形式:
1)插入:INSERT
2)更新:UPDATE
3)删除:DELETE
3. 数据查询语言DQL
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
4. 数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
1)GRANT:授权。
2)ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。
回滚---ROLLBACK
回滚命令使数据库状态回到上次最后提交的状态。其格式为:
SQL>ROLLBACK
sql查询流程
-
连接器:通过连接器判断用户名和密码是否正确,若失败,直接返回用户被拒的错误;否则获取用户权限信息;
-
查询缓存:若查询缓存开启则通过sql语句查询缓存中是否有key为当前查询的sql,若存在,直接返回value,结束查询;
-
分析器:若缓存无结果返回,那么通过分析器,对sql语句进行解析,若sql语句有误,返回语法错误信息,结束查询;
-
优化器:sql语句正常经过分析器后,在优化器确认最终的执行方案,确定是用表中的索引以及表的连接顺序;
-
执行器:当到达执行器的时候判断用户对sql中的表有没有权限操作,若没有返回权限不足的错误信息,否则,调用存储引擎提供的数据查询接口查询数据,若缓存开启,则更新缓存,最后将结果返回。