赞
踩
目录
前几天我写了一篇关于mysql连接器的文章,文章名是你知道mysql-connector-java是什么吗。写完后自我感觉良好,觉得这篇文章写的还不错,应该是讲清楚了mysql连接器是什么。等过了几天回过头来看,这写的是什么玩意,啥都没讲清楚。这就好比年前写的代码,刚写完的时候觉得自己写的代码逻辑清晰,代码优雅。过完年后,如果不是git上有提交记录,都不敢相信这是自己写的烂代码,这是啥逻辑,注释都没一个,我相信很多读者朋友都有这样的经历。写了烂代码,就需要重构。文章没写清楚,没表达出我的意思,所以我要重新写一篇,这是为什么要写这篇文章的原因。在查阅mysql的官方文档的基础上,加上自己的见解,我尽量将该知识点写准确、清晰。官方文档地址是:MySQL :: Connectors and APIs ,感兴趣的朋友可以去看看。
假设你现在是一名大一的学生,没有学习任何编程语言,这学期学校开了mysql的课。老师会告诉你mysql是c/s架构的数据库,分为服务端和客户端,用户通过服务端访问客户端。几节课下来,你会写简单的sql语句了。此时的你应该会用mysql自带的命令行客户端操作数据库,在黑乎乎的窗口中写sql。过了一个多月,老师告诉你还可以用图像化管理工具操作数据库,例如Navicat、SQLyog等。此时你已经用了两种不同类型的客户端操作了mysql,并且已经会用sql写增删改查了。
|
|
到了第二学期你开始学编程语言了,你把C、C++、C#、JAVA、Python统统学了个遍,但是你如何用这些语言编写的程序去操作mysql数据库?mysql提供了连接器,是用于将不同编程语言的应用程序连接到MySQL数据库服务器的驱动程序。用这些语言编写的程序和上面我们讲的命令行客户端和图像化管理工具一样,都属于mysql的客户端,通过客户端是可以操作mysql服务端。下图是mysql官网为不同语言提供的连接器和api的介绍,从图中可以看到为java提供的连接器是Connector / J,也就是mysql-connector-java,它分为5.1版本和8.0版本。Connector / J实现了JDBC,为使用java开发的程序提供连接,方便java程序操作数据库。
我们刚才讲到mysql-connector-java分为5.1版本和8.0版本,但有的朋友可能在项目中用到过6.0版本的jar包,而我们在官网的截图中确实没看到6.0版本。对此我也有很大的疑问,通过查看官方文档,我了解到8.0以前就是6.0,后来版本号更改,6.0变成了8.0,官方推荐升级使用8.0版本的mysql-connector-java。下面我们分析5.1和8.0分别支持的jdk的版本、mysql的版本、jdbc的版本,以及开发项目过程中容易配错的Driver驱动类的全路径名。在开发过程中如果遇到Driver找不到的异常,可以访问java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver异常查看解决方案。
5.1版本支持java5及其以上的版本,支持5.6、5.7、8.0版本的mysql数据库,支持3.0、4.0、4.1、4.2版本的jdbc。在5.1中,Driver的实现类的全路径名是com.mysql.jdbc.Driver。
8.0版本支持java8及其以上的版本,支持5.6、5.7、8.0版本的mysql数据库,支持4.2版本的jdbc。在8.0中,Driver的实现类的全路径名是com.mysql.cj.jdbc.Driver。
下图是官网上mysql-connector-java的版本对应的mysql版本和jdk的版本。
要使用mysql连接器,就要先下载它。如果是一般的项目,那我们需要下载jar包,然后放到项目的lib目录下。如果使用maven构建的项目,我们可以通过maven直接安装。不同的下载方式有不同的操作,下面我们分别讲解一下这两种不同的下载方式。
下载jar包最直接的方式是从官网下载,官网地址是:MySQL :: Download Connector/J。直接点链接进入mysql官网,选择所需的版本和操作系统(要下载jar包就要选:Platform Independent),然后点击download按钮就可以下载了。如果进不了官网,也可以访问我写的另一篇文章《不同版本mysql-connector-java的jar包下载地址》,可以直接下载。
使用maven安装mysql-connector-java就简单很多,直接打开maven的中央仓库地址,输入mysql-connector-java就可以找到不同版本的依赖。地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java
当jar包下载好之后,就可以在代码中使用连接器了。下面我们分别介绍在jdbc中使用连接器和在spring中使用连接器,大家也可以对比它们的区别。
- package com.test;
-
- import com.mysql.jdbc.Driver;
-
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.Statement;
-
- public class DbUtil {
- public static final String URL = "jdbc:mysql://localhost:3306/test";
- public static final String USER = "root";
- public static final String PASSWORD = "root";
-
- public static void main(String[] args) throws Exception {
- //1.加载驱动程序
- Class.forName("com.mysql.jdbc.Driver");
- //2. 获得数据库连接
- Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
- //3.操作数据库,实现增删改查
- Statement stmt = conn.createStatement();
- ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM user");
- //如果有数据,rs.next()返回true
- while(rs.next()){
- System.out.println(rs.getString("user_name")+" 年龄:"+rs.getInt("age"));
- }
- }
- }
在spring中配置数据源,数据源中的配置包括Driver类的全路径名、url、username、password。再通过数据源获取数据库连接,再通过数据库连接操作数据库。
- <bean id="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="${db.driver}"/>
- <property name="url" value="${db.jdbcurl}"/>
- <property name="username" value="${db.username}"/>
- <property name="password" value="${db.password}"/>
- </bean>
- // Create a new application context. this processes the Spring config
- ApplicationContext ctx =
- new ClassPathXmlApplicationContext("ex1appContext.xml");
- // Retrieve the data source from the application context
- DataSource ds = (DataSource) ctx.getBean("dataSource");
- // Open a database connection using Spring's DataSourceUtils
- Connection c = DataSourceUtils.getConnection(ds);
- try {
- // retrieve a list of three random cities
- PreparedStatement ps = c.prepareStatement(
- "select City.Name as 'City', Country.Name as 'Country' " +
- "from City inner join Country on City.CountryCode = Country.Code " +
- "order by rand() limit 3");
- ResultSet rs = ps.executeQuery();
- while(rs.next()) {
- String city = rs.getString("City");
- String country = rs.getString("Country");
- System.out.printf("The city %s is in %s%n", city, country);
- }
- } catch (SQLException ex) {
- // something has failed and we print a stack trace to analyse the error
- ex.printStackTrace();
- // ignore failure closing connection
- try { c.close(); } catch (SQLException e) { }
- } finally {
- // properly release our connection
- DataSourceUtils.releaseConnection(c, ds);
- }
以上就是关于mysql-connector-java的介绍,总的来说mysql-connector-java就是帮助java程序操作mysql的驱动程序。通过与mysq服务端建立连接,发送sql语句并且获取结果集。希望这篇文章能够帮助到你,如有疑问,欢迎在评论区中提出。在过去几年中,没写几篇博客,也没意识到写博客的重要性。但现在意识到写博客的重要性了,输出倒逼输入,要想系统性的输出,就得系统性的学习。这段时间写了几篇博客,收获了很多,成长了很多。也发现了自己的不足,在写作方面还有很大的成长空间,一步一个脚印,慢慢的锻炼自己的写作能力。未来会经常性的写博客,不单只写技术,可以聊点程序员生活,聊点人生感悟。感谢支持!
最近新写了一篇关于原生 JDBC 和 Mybatis 对比的文章,感兴趣的可以去瞧一瞧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。