自由式学习
1人加入学习
(1人评价)
Java_Java_Mysql
价格 免费
该课程属于 2226-杨同学-java方向-就业:是 请加入后再学习
Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
* 步骤:
	1. 导入jar包
	2. 创建JdbcTemplate对象。依赖于数据源DataSource
		* JdbcTemplate template = new JdbcTemplate(ds);

	3. 调用JdbcTemplate的方法来完成CRUD的操作
		* update():执行DML语句。增、删、改语句
		* queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
			* 注意:这个方法查询的结果集长度只能是1
		* queryForList():查询结果将结果集封装为list集合
			* 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
		* query():查询结果,将结果封装为JavaBean对象
			* query的参数:RowMapper
				* 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
				* new BeanPropertyRowMapper<类型>(类型.class)
		* queryForObject:查询结果,将结果封装为对象
			* 一般用于聚合函数的查询
[展开全文]
定义工具类
		1. 定义一个类 JDBCUtils
		2. 提供静态代码块加载配置文件,初始化连接池对象
		3. 提供方法
			1. 获取连接方法:通过数据库连接池获取连接
			2. 释放资源
			3. 获取连接池的方法
[展开全文]

数据库连接池

1. 概念:其实就是一个容器(集合),存放数据库连接的容器。
	    当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。

2. 好处:
	1. 节约资源
	2. 用户访问高效

3. 实现:
	1. 标准接口:DataSource   javax.sql包下的
		1. 方法:
			* 获取连接:getConnection()
			* 归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接

	2. 一般我们不去实现它,有数据库厂商来实现
		1. C3P0:数据库连接池技术
		2. Druid:数据库连接池实现技术,由阿里巴巴提供的


4. C3P0:数据库连接池技术
	* 步骤:
		1. 导入jar包 (两个) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar ,
			* 不要忘记导入数据库驱动jar包
		2. 定义配置文件:
			* 名称: c3p0.properties 或者 c3p0-config.xml
			* 路径:直接将文件放在src目录下即可。

		3. 创建核心对象 数据库连接池对象 ComboPooledDataSource
		4. 获取连接: getConnection
	* 代码:
		 //1.创建数据库连接池对象
        DataSource ds  = new ComboPooledDataSource();
        //2. 获取连接对象
        Connection conn = ds.getConnection();
[展开全文]

druid:数据库连接池实现技术,由阿里巴巴提供

步骤:

1.倒入jar包

2.定义配置文件:是properties形式的,放在那个包下都行

3.加载配置文件

4.获取连接池对象

5.获取连接

[展开全文]

PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程

2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。

3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得,   preparedstatement支持批处理

 

抽取jdbc工具类:jdbcUtils

目的:简化书写

分析:注册驱动也抽取

抽取一个方法获取连接对象

需求:不想传递参数(麻烦),还要保证工具类的通用性

解决:配置文件

jdbc.properties

[展开全文]

DDL:操作数据库和表

DML:增删改表中的数据

DQL:查询表中数据

DCL:管理用户,授权

DBA:数据管理员

[展开全文]

步骤:

导入驱动jar包

注册驱动

获取数据库连接对象connection

定义sql

获取执行sql语句的对象ststement

执行sql,接受返回对象

处理结果

释放资源

[展开全文]

jdbc:Java dateBase connectivity Java数据库连接,Java语言操作数据库

jdbc本质:官方定义了一套操作所有关系型数据库的规则,即接口

[展开全文]

事务的隔离级别:

多个事务之间隔离的,相互独立。但是如果多个事务同时操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题

存在问题:

脏读:一个事务读取到另一个事务中还没有提交的数据

不可重复度:在同一个事务中,两次读取的数据不一样

幻读:一个事务操作数据表中的所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改

隔离级别:

读未提交:脏读,不可重复度,幻读

读已提交:不可重复度,幻读(oracle默认)

可重复读:幻读(mysql默认)

串行化:解决所有问题

隔离级别从小到大安全性越来越高,但是效率越来越低

[展开全文]

事务的四大特性:

原子性:

是不可分割的最小操作单位,要么同时成功,要么同时失败

持久性:

当事务提交或者回滚,数据库会持久化的保存数据

隔离性:

多个事物之间,相互独立

一致性:

事务操作前后,数据总量不变

[展开全文]

事务:

如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败

操作:开启事务 start transaction

回滚:rollback

提交:commit

四大特征:

隔离级别

[展开全文]

子查询:查询中嵌套查询,称为子查询

[展开全文]

外连接:

左联

left join

右联

right join

区别:

内联查询: inner join ... on ... ,不以谁为主,列出满足条件的查询结果集;

左联查询:left join .... on ... , 以昨表为主,列出满足条件的结果集;

右联查询:right join ... on ... ,以右表为主,列出满足条件的结果集;
 

[展开全文]

内连接查询:

隐式查询:id关联

显示内连接:inner join on

[展开全文]

笛卡尔积

 

  1. 先确定数据要用到哪些表。
  2. 将多个表先通过笛卡尔积变成一个表。
  3. 然后去除不符合逻辑的数据(根据两个表的关系去掉)。
  4. 最后当做是一个虚拟表一样来加上条件即可
[展开全文]

数据库设计的范式:

1.第一范式(确保每列保持原子性)

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

 

2.第二范式(确保表中的每列都和主键相关)

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中

 

3.第三范式(确保每列都和主键列直接相关,而不是间接相关)

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

[展开全文]

where和having的区别

where在分组之前进行限定,having在分组之后进行限定

where后不能跟聚合函数,having能跟聚合函数

 

[展开全文]

DQL:查询表中数据

DML:增删改表中的数据

[展开全文]

数据库:用于存储和管理数据的仓库

 

数据库的特点:持久化存储数据的。其实数据库就是一个文件系统,方便存储和管理数据,使用了统一的方式操作数据库

 

[展开全文]

授课教师

高级算法工程师
老师

课程特色

图文(1)
视频(93)
考试(6)

最新学员