连接MySQL5.7和5.7以下版本的设置说明
2020-03-19 09:15:20


Lerx CMS升级到5.2后,支持当前Oracle MySQL最新的社区版5.7。因为CentOS 7.X 默认的MySQL数据库也是5.7。但该版本连接方式与以前区别较大。


主要注意以下几个方面:


一、驱动文件


5.7使用mysql-connector-java-8.0.11.jar

而之前版本使用

mysql-connector-java-5.1.47.jar

mysql-connector-java-5.1.47-bin.jar

注意在WEB-INF/lib中根据相应的要求进行放置。不要重复放置多种版本,以防冲突。


二、文件jdbc.properties


#jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.driverClassName=com.mysql.cj.jdbc.Driver

#jdbc.url=jdbc:mysql://localhost:3306/portal?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull

jdbc.url=jdbc:mysql://localhost:3306/portal?useSSL=false&characterEncoding=utf-8&serverTimezone=UTC

jdbc.username=portal

jdbc.password=ilovelerx


5.7版本的数据库驱动为com.mysql.cj.jdbc.Driver

上面文件中用#注释掉的是5.7以前版本的连接方式。你可以按照实际环境修改。


三、文件hibernate.cfg.xml


<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">


<hibernate-configuration>

<session-factory>

<property name="show_sql">false</property>

<!-- <property name="dialect">org.hibernate.dialect.MySQLDialect</property> -->

<!-- MySQL 5.7 (CentOS 7下) -->

<property name="dialect">org.hibernate.dialect.MySQL57Dialect</property>

<!-- <property name="hibernate.c3p0.max_size">500</property>

        <property name="hibernate.c3p0.min_size">20</property>

        <property name="hibernate.c3p0.max_statements">10</property>

        <property name="hibernate.c3p0.timeout">2000</property>

        <property name="hibernate.c3p0.idle_test_period">2000</property>

        <property name="hibernate.c3p0.acquire_increment">10</property>

<property name="hibernate.connection.serverTimezone">Asia/Shanghai</property>

        <property name="hibernate.connection.useUnicode">true</property>

        <property name="hibernate.connection.characterEncoding">utf8</property>

        <property name="hibernate.connection.autoReconnect">true</property>

        <property name="hibernate.connection.autocommit">true</property>

        <property name="hibernate.connection.zeroDateTimeBehavior">convertToNull</property>

        <property name="hibernate.connection.useSSL">false</property>

        <property name="hibernate.connection.pool_size">1</property>

        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> -->


...


5.7的数据库方言必须将org.hibernate.dialect.MySQLDialect改为org.hibernate.dialect.MySQL57Dialect


如果使用c3p0连接池,注意将下面注释掉的部分恢复。


四、文件transaction.xml


如果使用c3p0连接池,请将以下部分进行互换。

<!-- 配置数据源 -->

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">

<property name="driverClassName" value="${jdbc.driverClassName}" />

<property name="url" value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

<property name="initialSize" value="3" />

<property name="minIdle" value="3" />

<property name="maxIdle" value="5" />

<property name="maxTotal" value="15" /> 

<property name="timeBetweenEvictionRunsMillis" value="1000" />

<property name="validationQuery" value="select 1" />

</bean>

<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property name="jdbcUrl" value="${jdbc.url}"></property>

<property name="user" value="${jdbc.username}"></property>

<property name="password" value="${jdbc.password}"></property>

<property name="driverClass" value="${jdbc.driverClassName}"></property>

<property name="maxPoolSize" value="20" />

<property name="minPoolSize" value="5" />

初始化建立的连接数

<property name="initialPoolSize" value="10" />

最大空闲时间,120秒内未被使用的连接将被丢弃

<property name="maxIdleTime" value="120" />

当连接池耗尽,且未达到最大连接数时,一次获取的连接数

<property name="acquireIncrement" value="2" />

空闲检查时间间隔, 每隔120秒检查连接池里的空闲连接 ,单位是秒

<property name="idleConnectionTestPeriod" value="60" />

</bean>

 -->

发布:lzh