1. JDBC URL 的说明
- JDBC URL 用于标识一个被注册的驱动程序
- 驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。
- JDBC URL 由三部分组成【协议:子协议://子名称&参数列表】
- 协议:JDBC URL中的协议总是jdbc
- 子协议:子协议用于标识一个数据库驱动程序
- 子名称:一种标识具体数据库的方法
- MySQL的URL的常用编写方法
- jdbc:mysql://主机名称:mysql服务端口号/数据库名称?参数1=值1&参数2=值2
- jdbc:mysql://localhost:3306/test?localhost:3306/atguigu?useUnicode=true&characterEncoding=utf8&serverTimezoneGMT%2B8&useSSL=true&rewriteBatchedStatements=true
- 协议:jdbc
- 子协议:mysql
- 子名称:localhost:3306/atguigu?useUnicode=true&characterEncoding=utf8&serverTimezoneGMT%2B8&useSSL=true&rewriteBatchedStatements=true
2. 常用参数
参数 | 说明 | 缺省值 |
---|
useUnicode | 是否使用Unicode字符集 | false |
characterEncoding | 指定字符编码,可设置为gbk、utf8、、、 | false |
serverTimezone | 设置时区,北京时间东八区(GMT%2B8)、上海时间(Asia/Shanghai) | - |
useSSL | 是否进行SSL连接 | false |
rewriteBatchedStatements | 是否开启批量处理功能 | false |
autoReconnect | 是否使用针对数据库连接池的重连策略 | false |
3. 参数说明
(1) useSSL
-- MySQL在高版本需要指明是否进行SSL连接
-- 目的是保障数据传输的安全
-- 需要在url后面添加useSSL参数
-- 否则在运行时控制台会出现红色警告
useSSL=true 连接
useSSL=false 不连接
(2) serverTimezone
使用MySQL8时可能会出现时差问题
例:
向数据库中添加的时间是:"2021-10-02 10:00:00"
然而数据库中显示的时间却少了8个小时,显示为:"2021-10-02 02:00:00"
根本原因是时区设置的问题
-- UTC代表的是全球标准时间
-- 但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时
-- UTC + 8 = 北京时间
解决方案:修改url的时区
serverTimezone=GMT%2B8 北京时间东八区
serverTimezone=Asia/Shanghai 上海时间
serverTimezone=UTC UTC时间,注意,区分大小写,一定是大写,不可以是小写的
(3) rewriteBatchedStatements
实现高性能的批量插入
需要在MySQL的JDBC连接的URL中添加rewriteBatchedStatements参数
并且保证5.1.13以上版本的驱动
MySQL JDBC驱动在默认情况下会无视executeBatch()语句
把我们期望批量执行的一组sql语句拆散
一条一条地发给MySQL数据库
此时的批量插入实际上是单条插入,直接造成较低的性能
只有把rewriteBatchedStatements参数置为true
驱动才会帮你批量执行SQL
另外这个选项对INSERT/UPDATE/DELETE都有效
(4) useUnicode 、characterEncoding
JDBC程序与服务器端的字符集不一致,会导致乱码,可以通过参数指定服务器端的字符集
设置字符集时,需要设置如下参数
-- useUnicode=true 开启字符集的设置
-- characterEncoding=utf8 设置字符集为utf8
4. 其它注意事项
- 在xml配置文件中配置数据库url时,要使用&的转义字符也就是 &
5. 参考