提示:有关数据库的任何操作,请事先都做好备份,一定不会错的;
文章目录
- 前言
- 一、com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver如何选择?
- 1、概念
- 2、引入驱动
- 3、总结
前言
新老项目的交替中,如果你使用的是mysql,并且做了相关版本的升级,可能会遇到一些关于数据库的驱动问题,那就是引入哪个驱动包;
一、com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver如何选择?
1、概念
在回答这个之前,我们需要了解几个概念,什么是数据库驱动
,什么是驱动类名
,什么是数据库版本
(1) 什么是数据库驱动
这个jar包一定不陌生,我们初期初学时不用maven的情况下,想调用mysql的话,这个是一定要引入到工程里的包,案例中的是Mysql 8.0版本的驱动; 驱动可以再maven的仓库中找到https://mvnrepository.com/artifact/mysql/mysql-connector-java
驱动的概念可以简单理解为:是一种用户和数据库之间的沟通交流的工具类
,内置了很多丰富的功能API,如连接,数据分析处理等等方法;
(2) 驱动类名
既然驱动是一个工具类,我们想要调用方法的时候,自然需要引入对应的工具类来使用,而com.mysql.jdbc.Driver
和com.mysql.jdbc.Driver
就是不同版本驱动中所对应的类名;
(3) 数据库版本
数据库版本就是我们在PC中安装的mysql本地服务版本,他通常决定了我们代码中该使用什么版本的驱动,以及相关数据库操作的语法和功能;
2、引入驱动
说完概念,标题说的问题常见的地方就是关于数据库驱动的引入,在代码中,引入驱动的方式无非就几种方式;
1、通过Class.forName
这是最早比较常用的方式了,你只需要将驱动的类名作为参数传进去就好;算是入门必学方式吧;
Class.forName("com.mysql.jdbc.Driver"); // Class.forName("com.mysql.cj.jdbc.Driver");
2、通过DriverManager引入
这种方式是后续Java版本中推荐的方式,也就是在Java5之后吧,所谓推荐,说白了就是让我们代码的调用更加优雅一些罢了,毕竟直接写驱动类名字符串有点磕碜吧;
Driver driver = new com.mysql.jdbc.Driver(); // Driver driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
注意的是:上面代码中DriverManager的这个方式是显式调用方法注册,不过我们大多情况下不会去特意这么写,因为驱动在加载的时候已经自动做了注册动作了,我们用的时候,通常都是直接连接数据库进行后续操作的;
DriverManager.getConnection(String url, String user, String password)
3、maven直接引入
这种方式直接在maven的pom文件中引入对应版本驱动依赖即可;
3、总结
了解完驱动的概念和引入方式后,我们就知道
1、com.mysql.jdbc.Driver
这个驱动类名是 MySQL Connector/J 5.1.x 版本
驱动中使用的 JDBC 驱动类名,而MySQL Connector/J 5.1.x是mysql 5.x版本适用的驱动
2、com.mysql.cj.jdbc.Driver
这个驱动类名是 MySQL Connector/J 8.0.x 版本
驱动中使用的 JDBC 驱动类名,MySQL Connector/J 8.0.x 是Mysql8.x版本系列的推荐驱动,需要注意的是:他是兼容Mysql 5.7的,再早期的版本就未必了
,所以就是为什么有的人说自己明明是mysql5.x的版本,也能用8.0版本的驱动原因;