数据库配置文件(db.properties)详解

Posted hundanshenzi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库配置文件(db.properties)详解相关的知识,希望对你有一定的参考价值。

在连接数据库的时候我们都要写数据库配置文件(db.properties)

其中,最主要的就是Driver和url

我们一般写Driver和url,都是像这样

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis

但是其实Driver和url还有更详细的写法

1.JDBC驱动的版本号以及名称问题

Driver的写法是和mysql-connector-java的版本有关
我们之前一直用的都是 mysql-connector-java 5的包

    <!--mysql的驱动包-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.49</version>
    </dependency>

所有我们写的都是

com.mysql.jdbc.Driver

但是我们在 mysql-connector-java 6以上的版本时

com.mysql.cj.jdbc.Driver

不然有可能会导致连接数据库时会有错误

2.URL配置

正常的url是写成

jdbc.url=jdbc:mysql://localhost:3306/mybatis

但是在url后面最好要增加以下

jdbc.url=jdbc:mysql://localhost:3306/mybatis
?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false

其中,useUnicode=true&characterEncoding=utf8

添加的作用是:指定字符的编码、解码格式。

例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了
useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:

1.存数据时:
数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。

2.取数据时:
在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。

serverTimezone=Asia/Shanghai

表示的是时区为上海时间,也是东八区,也可以写成
serverTimezone=GMT%2B8
其中%2B表示的是+号,所有GMT%2B8即为GMT+8
表示的也是东八区,北京时间

如果时区没有设置好,可能会出现时差问题
在使用高版本的mysql的驱动jar包时,从mysql中查出的时候,时间可能都比数据库的时间多13小时,而且这些时间存到数据库的时间,有些是正确的时间,有时比正确时间少13小时,这样返回给前端的时间就不准确

useSSL=false

在测试sql语句的时候,发现会有如下警告,虽然不影响结果,但是这一串红色的警告就很烦

上面的警告的意思是:

警告:不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+,如果没有设置显式选项,默认情况下必须建立5.6.26+和5.7.6+要求的SSL连接。您需要通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储。

其原因就是需要指明是否进行SSL连接
如下就是添加useSSL=false

useSSL=false和true的区别:
SSL(Secure Sockets Layer 安全套接字协议),
在mysql进行连接的时候,如果mysql的版本是5.7之后的版本必须要加上useSSL=false,
mysql5.7以及之前的版本则不用进行添加useSSL=false,会默认为false,一般情况下都是使用useSSL=false,尤其是在将项目部署到linux上时,一定要使用useSSL=false!!!
useSSL=true是进行安全验证,一般通过证书或者令牌什么的,
useSSL=false就是通过账号密码进行连接,通常使用useSSL=false!!!

db.properties配置文件在哪里配置,第一步怎么做?

db.properties连接池的用法Properties文件,其实仅仅是键值对配置文件。下面介绍如何读取properties文件以及如何用JDBC连接数据库。 1.[读取配置文件]: 比如你的properties文件叫做mysql.properties,并且放在com.test包下: java.net.URL url = Thread.currentThread().getContextClassLoader().getResource("com/test/mysql.properties"); 注意路径和包名一致,在你的提问中,我们知道是放在classes目录下,则直接 ...getResource("mysql.properties"); 即可 Properties p = new Properties(); p.load(url.openStream()); //由URL载入配置文件 这样你就得到一个Properties的实例 2. [读取配置文件信息]: 比如你要读取drivers的值,只需: String theDriver = p.get("drivers"); 根据配置文件,这样你就得到了"org.gjt.mm.mysql.Driver" 3.[利用JDBC连接数据库] 首先你要保证你有MySQL的Jdbc驱动程序,即包含org.gjt.mm.mysql.Driver的jar包,并放在应用的classpath里。你可以搜索一下,很多地方有下的: mysql-connector-java-3.0.15-ga-bin.jar 然后用同样的方法得到url, mysql.user, mysql.password的值,比如分别为 url, user, pass 然后建立连接: Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection conn = java.sql.DriverManager.getConnection(url, user, pass); 如果不出意外,你就得到连接数据库的Connection了,注意用完了别忘了关啊。(conn.close();) 4.[补充说明] properties文件只是一个键-值对的配置文件(而且键和值都是可以自己写的,并没有固定格式,要看程序需求),从它“本身”只能得到键对应的值。具体这个值用来干什么,那是程序的事情。比如logfile和maxconn,我只能猜是用来处理log和建立连接池时标记最大连接数的,具体怎么实现,需要研究它的代码,因为并没有固定写法。(而上面用jdbc建立连接的写法是固定的)。因为你只给了个properties文件,所以我只能写一个jdbc的连接程序,但这并不是连接池的实现。 这里有个连接池的实现,你可以参考下: http://blog.csdn.net/manud/articles/89022.aspx 2 . SID = orcl ServerName = 192.168.0.24 Port = 1521 User = eclass Password = efound 上面是我在oracle下的配置文件。主要就是你连接数据库时要用到的各个参数,写成属性=值的形势,然后建立数据库连接的时候,参数就不是在bean里面设定,而是来读取这里的参数,就是读文件而已。3 .Java数据库连接池的实现 连接池的配置文件--db.properties(放置在classes目录下) 19:52drivers=sun.jdbc.odbc.JdbcOdbcDriverlogfile=c:/dbpool.log.txtCOMDB.url=jdbc:odbc:COMDBCOMDB.user=AdminCOMDB.password=123456COMDB.initconns=5COMDB.maxconns=50COMDB.logintimeout=5COMDB.loglevel=infoattend.url=jdbc:odbc:attendattend.user=userattend.password=1234attend.initconns=5attend.maxconns=50attend.logintimeout=5attend.loglevel=info 参考技术A 主要就是你连接数据库时要用到的各个参数,写成属性=值的形势,然后建立数据库连接的时候,参数就不是在bean里面设定,而是来读取这里的参数,就是读文件而已 参考技术B   1.[读取配置文件]: 比如你的properties文件叫做mysql.properties,并且放在com.test包下: java.net.URL url = Thread.currentThread().getContextClassLoader().getResource("com/test/mysql.properties"); 注意路径和包名一致,在你的提问中,我们知道是放在classes目录下,则直接 ...getResource("mysql.properties"); 即可 Properties p = new Properties(); p.load(url.openStream()); //由URL载入配置文件 这样你就得到一个Properties的实例
  2. [读取配置文件信息]: 比如你要读取drivers的值,只需: String theDriver = p.get("drivers"); 根据配置文件,这样你就得到了"org.gjt.mm.mysql.Driver"
  3.[利用JDBC连接数据库] 首先你要保证你有MySQL的Jdbc驱动程序,即包含org.gjt.mm.mysql.Driver的jar包,并放在应用的classpath里。你可以搜索一下,很多地方有下的: mysql-connector-java-3.0.15-ga-bin.jar 然后用同样的方法得到url, mysql.user, mysql.password的值,比如分别为 url, user, pass 然后建立连接: Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection conn
参考技术C drivers=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:sqlserver://localhost:1433;user=sa;password=sa;DatabaseName=test

大概是这样

以上是关于数据库配置文件(db.properties)详解的主要内容,如果未能解决你的问题,请参考以下文章

mybatis 详解------properties以及别名定义

db.properties配置文件在哪里配置,第一步怎么做?

jdbc的数据库连接信息在属性文件中的配置(db.properties)

三种数据库的配置文件db.properties

db.properties怎么创建

5.1properties属性