当前位置: 首页 > 后端技术 > Java

SpringMVC+MyBatis搭建JavaWEB项目执行数据库操作报错,空了好久

时间:2023-04-01 21:20:59 Java

MySQl默认连接时间为8小时。如果连接超过8小时没有对数据库进行任何操作,就会断开连接。这时候你会报错java.io.EOFExceptionatcom.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)atcom.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)atcom.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)...这个问题在不同的MySQL版本中可以有不同的解决方案。比如MySQL5之前,可以在数据库连接的url中加上“autoReconnect=true”(这只在mysql5之前有效)更改MySQL配置文件,将默认的8小时改为更长的时间,这里不再介绍.介绍使用MyBatis+C3P0数据库连接池来解决这个问题。首先在pom.xml中引入C3P0com.mchangec3p00.9.5.4更改MyBatis的配置文件注意MyBatis配置文件中的dataSource(数据源)属性设置为下面的类文件importcom.mchange。v2.c3p0.ComboPooledDataSource;importorg.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;/***创建兼容C3P0和MyBatis的数据源工厂类*/publicclassC3P0DataSourceFactoryextendsUnpooledDataSourceFactory{publicC3P0DataSourceFactory(){this.dataSource=newComboPooledDataSource();}}至此MyBatis连接数据库超过8小时后自动断开连接的问题已经解决