概念:JDBC(Java数据库连接)
本质:官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。
各个数据库厂商去实现这套接口,提供数据库驱动jar包。
我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
好处:同一套java代码可以操作不同的关系型数据库,在项目中切换数据库会变的非常简单。
JDBC的简单实现
/*
* JDBC实现步骤:
* 0.创建工程,导入驱动jar包
* 1.注册驱动,告诉程序使用哪个驱动jar包
* 2.获取连接对象Connection
* 3.获取执行SQL的执行者对象PreparedStatement
* 4.执行SQL语句
* 5.处理返回结果
* 6.释放资源
* */
public class JDBCDemo1 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.注册驱动,告诉程序使用哪个驱动jar包
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象Connection
String url="jdbc:mysql://localhost:3306/db2?useSSL=false";
String username="root";
String password="root";
Connection conn = DriverManager.getConnection(url, username, password);
//3.获取执行SQL的执行者对象PreparedStatement
PreparedStatement ps = conn.prepareStatement("update account set money=1000 where id =1");
//4.执行SQL语句
int count=ps.executeUpdate();
//5.处理返回结果
System.out.println("影响的行数:"+count);
//6.释放资源
ps.close();
conn.close();
}
}
JDBC API | 作用1 | 作用2 |
DriverManager | 注册驱动 | 获取数据库连接 |
Connection | 获取执行SQL的对象 | 管理事务 |
PreparedStatement | 动态设置参数 | 执行SQL语句 |
ResultSet | 获取查询结果 |
DriverManager(驱动管理类)
注册驱动
在开发中,我们不使用DriverManager.registerDriver(new Driver());方法驱动,因为会导致驱动注册两次。
MySQL 5之后可以省略注册驱动的步骤。
自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类
获取数据库连接
Connection
获取执行SQL的对象
普通执行SQl对象,使用Statement对象执行SQL有漏洞
此时name位置可以随便输入,然后在pwd位置输入特定的语句就可以保证sql 永远执行成功。('or'1=1)
预编译SQL功能的执行SQL对象:解决了Statement对象执行SQL的漏洞
执行存储过程的对象
CallableStatement prepareCall(sql)
事务管理
Connection conn = DriverManager.getConnection(url, username, password);
try {
//setAutoCommit(boolean autoCommit):true为自动提交事务;false为手动提交事务,即为开启事务。
conn.setAutoCommit(false);
PreparedStatement ps1 = conn.prepareStatement("update account set money=money+500 where name='张三'");
int count1 = ps1.executeUpdate();
System.out.println("张三影响的行数:"+count1);
PreparedStatement ps2 =conn.prepareStatement("update account set money=money-500 where name='李四'");
int count2 = ps2.executeUpdate();
System.out.println("李四影响的行数:"+count2);
//提交事务
conn.commit();
} catch (SQLException throwables) {
throwables.printStackTrace();
//回滚事务
conn.rollback();
}
PreparedStatement
动态设置参数
执行SQL语句
ResultSet
ResultSet(结果集对象)作用:封装了DQL查询语句的结果,获取查询结果。
数据库连接池
数据库连接池是个容器,负责分配,管理数据库连接
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
实现资源复用和提升系统响应速度
常见的数据库连接池
DBCP
C3P0
Druid
Druid(德鲁伊)
Druid连接池是阿里巴巴开源的数据库连接池项目
功能强大,性能优秀,是Java语言最好的数据库连接池之一
/*
* 1.导入jar包
* 2.创建DruidDataSource对象
* 3.设置连接参数
* 4.获取连接
* 5.使用完之后归还连接
* */
public class DruidDemo1 {
public static void main(String[] args) throws SQLException {
//2.创建DruidDataSource对象
DruidDataSource dataSource=new DruidDataSource();
//3.设置连接参数
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///db2?useSSL=false");
dataSource.setUsername("root");
dataSource.setPassword("root");
//4.获取连接
DruidPooledConnection conn=dataSource.getConnection();
PreparedStatement ps=conn.prepareStatement("update account set money=3888 where id=1");
int count=ps.executeUpdate();
System.out.println("影响的行数是:"+count);
ps.close();
// 5.使用完之后归还连接
conn.close();
}
}
Maven
Maven是专门用于管理和构建Java项目的工具,它的主要功能有:
提供了一套标准化的项目结构:
提供了一套标准化的构建流程(编译,测试,打包,发布...):
提供了一套依赖管理机制(也就是管理jar包)
Maven简介
Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建,报告和文档。
Maven将java项目看成是一个个对象,也就是项目对象模型,我们通过项目中pom.xml描述项目对象。
通过pom.xml告诉maven,项目需要哪些资源(jar包),这个叫做依赖管理,jar包都是从仓库中引进来的。
我们可以通过各种各样的插件来构建项目,例如:编译,测试,打包...
Maven仓库
仓库分类:
本地仓库:自己计算机上的一个目录
中央仓库:由Maven团队维护的全球唯一的仓库
地址:https://repo1.maven.org/maven2/
远程仓库(私服):一般由公司团队搭建的私有仓库(
阿里镜像:http://maven.aliyun.com/nexus/content/groups/public/)
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
有就在项目中直接引用,没有就去中央仓库下载对应的jar包到本地仓库,如果有私服就先去私服下载。
Maven安装配置
解压apache-maven-3.6.1-bin.zip即安装完成(我的Maven)
配置环境变量,配置MAVEN_HOME和path
配置本地仓库,修改conf/settings.xml中的<localRepository>为一个指定目录
配置阿里云中央仓库:修改conf/settings.xml中的<mirrors>标签,为其添加子标签。
Maven基本使用
Maven常用命令:
compile:编译
clean:清理
test:测试
package:打包
install:安装到本地仓库
Maven生命周期:
Maven构建项目生命周期描述的是一次构建过程经历了多少个事件/阶段
Maven对项目构建的生命周期划分为3套
clean:清理工作
default:核心工作,例如编译,测试,打包,安装等
site:产生报告,发布站点等