spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?rewriteBatchedStatements=true
在MyBatis Plus框架中,批量插入是一种高效的数据库操作方式。通过开启rewriteBatchedStatements=true
,可以获得许多优点,从而提高数据库插入性能、减轻负载以及简化代码。MyBatis Plus框架自带的批处理方法 可以直接调用使用,但是要注意mysql连接串要配置参数为true 否则这个性能还是不会起来
IService<T>接口的saveBatch方法
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveBatch(Collection<T> entityList, int batchSize) {
String sqlStatement = getSqlStatement(SqlMethod.INSERT_ONE);
return executeBatch(entityList, batchSize, (sqlSession, entity) -> sqlSession.insert(sqlStatement, entity));
}
?
Java mysql链接串:
jdbc:mysql://mysql安装IP:3306/db_test?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useAffectedRows=true
具体场景:当该值是false时,执行【UPDATE】语句,在该【UPDATE】的条件下可以找到3条记录,但是实际上只更新了2条数据,因为第三条数据将要修改的值与原来的值相同,则该【UPDATE】语句会返回3、而有时候我们希望他返回2、则设置该参数值为 TRUE
从哪个版本开始有这个参数:5.1.7
1.可以在sql语句后携带分号,实现多语句执行。
可以执行批处理,同时发出多个SQL语句。
sql语句
不加allowMultiQueries=true之前,会报错
如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat.
解决办法:
? ?一种. 如果不用hibernate的话, 则在 connection url中加参数: autoReconnect=true? ? jdbc.url=jdbc:mysql://ipaddress:3306/database?autoReconnect=true&autoReconnectForPools=true
在使用数据库连接池的情况下,最好设置如下两个参数:
autoReconnect=true&failOverReadOnly=false
?