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时,要使用&的转义字符也就是 &amp

5. 参考

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐