mybatis oracle查询数据量过大时 查询时间过长

一、使用Navicat查询sql为 0.556s 数据为 8635条

感觉还凑合不算慢
在这里插入图片描述

二、放在myabtis中执行,打印sql执行之间发现时间翻了将近4倍

在这里插入图片描述

三、最后发现mybatis 默认一次读取100条数据 (只针对oracle mysql未知),当读取分页数据是没什么问题,但是当读取大量数据是就会显得慢了,只需要根据自身需求配置即可,以下采用yml格式配置

mybatis:
  mapper-locations: classpath:mapping/*.xml
  type-aliases-package: com.zkar.ptswindowservice.pojodetain/authentication
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    default-fetch-size: 1000 #可以根据项目需求加大参数  每次读取1000条 默认 100

四、查看效果 完美解决,耗时 0.639

在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis-Plus 中处理联合主键大数据量的批量更新,针对 Oracle 数据库,可以按照以下步骤进行操作: 1. 确保你已经定义了对应的实体类,并在实体类中使用 `@TableId` 注解标识联合主键字段。 ```java @Data @TableName("your_table_name") public class YourEntity { @TableId(type = IdType.INPUT) private Long key1; @TableId(type = IdType.INPUT) private Long key2; // 其他属性 } ``` 2. 创建一个 Mapper 接口,继承自 `BaseMapper` 并指定实体类作为泛型参数。 ```java @Repository public interface YourMapper extends BaseMapper<YourEntity> { } ``` 3. 在 Service 层中使用 MyBatis-Plus 提供的方法进行批量更新操作。具体来说,可以使用 `updateBatchById` 方法。 ```java @Service public class YourService { private final YourMapper yourMapper; @Autowired public YourService(YourMapper yourMapper) { this.yourMapper = yourMapper; } public void batchUpdate(List<YourEntity> entityList) { yourMapper.updateBatchById(entityList); } } ``` 4. 在 Oracle 数据库中,由于不支持直接使用 `(key1, key2) in` 的语法,可以通过使用临表来实现批量更新。首先,创建一个临表,用于存储批量更新的数据。 ```sql CREATE GLOBAL TEMPORARY TABLE temp_table ( key1 NUMBER, key2 NUMBER ) ON COMMIT PRESERVE ROWS; ``` 5. 接下来,在批量更新方法中使用原生 SQL 来执行批量更新操作。 ```java @Repository public interface YourMapper extends BaseMapper<YourEntity> { @Update("INSERT INTO temp_table (key1, key2) VALUES (#{item.key1}, #{item.key2})") void insertIntoTempTable(@Param("item") YourEntity item); @Update("UPDATE your_table_name t SET column1 = ?, column2 = ? WHERE EXISTS (SELECT 1 FROM temp_table WHERE t.key1 = temp_table.key1 AND t.key2 = temp_table.key2)") void batchUpdate(); } ``` 在上述示例中,我们使用 `insertIntoTempTable` 方法将批量更新的数据插入临表中,然后使用 `batchUpdate` 方法执行批量更新操作。在 `batchUpdate` 方法中,我们使用原生 SQL 来更新目标表的数据,通过与临表的关联来实现根据联合主键批量更新的效果。 最后,调用 `batchUpdate` 方法即可执行批量更新操作。 请确保在配置文件中配置好数据库连接信息和相关的 MyBatis-Plus 配置。希望对你有所帮助!如果有任何疑问,请随提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值