sql8新特性
MySQL 8 新特性概述:::info更简便的NoSQL支持::: NoSQL泛指非关系型数据库和数据存储。随着互联网平台的规模飞速发展,传统的关系型数据库已经越来越不能满足需求。从5.6版本开始,MySQL就开始支持简单的NoSQL存储功能。MySQL 8对这一功能做了优化,以更灵活的方式实现NoSQL功能,不再依赖模式(schema)。:::info更好的索引:::在查询中,正确地使用索引可以提高查询的效率。MySQL 8中新增了隐藏索引和降序索引。隐藏索引可以用来测试去掉索引对查询性能的影响。在查询中混合存在多列索引时,使用降序索引可以提高查询的性能。:::info更完善的JSON支持:::MySQL从5.7开始支持原生JSON数据的存储,MySQL 8对这一功能做了优化,增加了聚合函数JSON_ARRAYAGG()和JSON_OBJECTAGG(),将参数聚合为JSON数组或对象,新增了行内操作符 ->>,是列路径运算符 ->的增强,对JSON排序做了提升,并优化了JSON的更新操作。:::info安全和账户管理:::MySQL 8中新增了caching_s ...
sql知识补充
自然连接
自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。
内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列。123456789SELECT A.value, B.valueFROM tablea AS A NATURAL JOIN tableb AS B;自然连接(natural join) 自动判断连接条件完成连接。 相当于省略了using,会自动查找相同字段名。 natural join natural left join natural right join
游标
声明游标1234MYSQL、SQL server、DB2语法: DECLARE 游标名称 CURSOR FOR 查询语句ORACLE: DECLARE 游标名称 CURSOR IS 查询语句
打开游标1OPEN 游标名称
使用游标1FETCH 游标名称 INTO 变量1,变量2.....变量n
:::warning变量需要和查询语句的变量个数相同:::
关闭游标1CLOSE 游标名称
游标案列
查询按逆序排好序的员工的员工工资总和大 ...
JDBC进阶
JDBC进阶使用事务
案例代码123456789101112131415161718192021222324252627282930313233343536373839404142Connection con = null;PreparedStatement psm =null;//张无忌给郭襄转账500try{ //注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //获取连接 String url="jdbc:mysql://127.0.0.1:3306/books?serverTimezone=UTC&useSSL=false"; con = DriverManager.getConnection(url,"root","panther9985"); //创建执行对象 String sql="update test1 set salary=? where username=?" ...
JDBC
JDBC API是一个Java API可以访问任何类型的数据库的数据,尤其是存储在关系数据库中的数据。 JDBC的工作原理与Java在各种平台一样,如Windows,Mac OS和各种版本的UNIX系统。
使用JDBC:::info
导入jar包::::::info
注册驱动:::12345import com.mysql.jdbc.Driverpublic static void main(String[] args) throws ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver"); }
:::info
获取连接:::1Connection con =DriverManager.getConnection("jdbc:mysql://localhost:3306/表名","用户","密码");
:::info
获取执行者对象:::12345 Statement stm=con.creat ...
DbUtils
Apache-DBUtils简介
commons—dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化dbc编码的工作量,同时也不会影响程序的性能。
API介绍:
org.apache.commons.dbutils.QueryRunner
org.apache.commons.dbutils.ResultSetHandler
工具类:org.apache.commons.dbutils.DbUtils测试测试插入1234567891011121314151617@Test public void testInsert() throws SQLException { Connection connection = null; try { connection = JDBCutil.getConnection(); QueryRunner queryRunner = new QueryRunner(); ...
JAVA数据结构
数据结构
数组稀疏数组当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:
记录数组一共有几行几列,有多少个不同的值
把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模案列[二维数组]{.label .info}—》》[稀疏数组]{.label .warning}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647public static void main(String[] args) { //根据二维数组创建稀疏数组 int[][] a= new int[11][11]; a[1][2] = 1; a[2][3] = 2; //遍历原数组 int val=0;//有效值数量 int[] vals = new int[100];//定义一个有效数组存放数据 for(int i = 0; ...
JdbcTemplate
JdbcTemplate(概念)
什么是 JdbcTemplate
Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作
简单使用JDBCTemplate
配置数据库连接池1234567<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="jdbc:mysql:///test" /> <property name="username" value="root" /> <property name="password" value="123456" /> <property name="d ...
spring5新特性
整合日志框架
Spring5.0 框架自带了通用的日志封装
Spring5 已经移除 Log4jConfigListener,官方建议使用 Log4j2
Spring5 框架整合 Log4j2引入对应jar包后创建对应配置文件
1234567891011121314151617181920<?xml version="1.0" encoding="UTF-8"?><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--Configuration后面的status用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,可以看到log4j2内部各种详细输出--><configuration> <!--先定义所有的appender--> <appenders> <!--输出日志信息 ...
springIOC
IOCIOC操作Bean管理(Bean的作用域)
在Spring中默认Bean是单例对象123456789101112@Test public void test07(){ ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); User user1 = (User)context.getBean("user"); User user2 = (User)context.getBean("user"); System.out.println(user1 == user2); //true bean为单实例 System.out.println(user2); // Gin.panther.Spring5.User@128d2484 System.out.println(user1); // Gin.panther.Sp ...
springAop
AOP(面向切面编程)
什么是 AOP
面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
通俗描述:不通过修改源代码方式,在主干功能里面添加新功能
AOP 底层使用动态代理
有两种情况动态代理第一种 有接口情况,使用 JDK 动态代理⚫ 创建接口实现类代理对象,增强类的方法JDK动态代理
1234567891011121314151617181920212223class InvocationHandlerImpl implements InvocationHandler { private Object obj; InvocationHandlerImpl(Object obj){ this.obj = obj; } // 增强逻辑 @Override public Object invoke(Object proxy, Method method, Object[] args) thro ...