当前位置: 首页 > wzjs >正文

app和网站开发中国免费广告网

app和网站开发,中国免费广告网,最专业的佛山网站建设,做设计找图有哪些网站有哪些问题在 MyBatis 中,批量操作是处理高并发数据写入的核心场景之一。通过 SqlSessionFactory 配置批处理执行器(ExecutorType.BATCH),可以显著提升数据库操作的效率。本文将结合 Spring 框架,深入解析如何高效配置和使用 MyB…

在 MyBatis 中,批量操作是处理高并发数据写入的核心场景之一。通过 SqlSessionFactory 配置批处理执行器(ExecutorType.BATCH),可以显著提升数据库操作的效率。本文将结合 Spring 框架,深入解析如何高效配置和使用 MyBatis 的批量执行功能,并提供性能优化策略。

一、SqlSessionFactory 基础配置

1. ​​添加依赖​​

在 pom.xml 中引入 MyBatis-Spring 相关依赖:

复制
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version>
</dependency>

注:若使用非 Spring Boot 项目,需手动配置 SqlSessionFactoryBean 和 SqlSessionTemplate。

2. ​​配置数据源​​

在 application.yml(Spring Boot)或 Spring XML 配置文件中定义数据源:

复制
spring:datasource:url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource

3. ​​配置 SqlSessionFactory​​

通过 SqlSessionFactoryBean 创建 SqlSessionFactory,并绑定数据源:

@Configuration
public class MyBatisConfig {@Autowiredprivate DataSource dataSource;@Beanpublic SqlSessionFactory sqlSessionFactory() throws Exception {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);// 指定 MyBatis 配置文件路径(可选)factoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));return factoryBean.getObject();}
}

XML 配置示例:

复制
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>

二、执行器配置

1.1 执行器类型选择

MyBatis 默认使用 SIMPLE 执行器,每次操作生成独立 SQL 语句。而 BATCH 执行器通过复用预编译语句(PreparedStatement)和合并参数,减少数据库交互次数,适用于批量插入/更新场景。

  • ​​全局配置示例(mybatis-config.xml)​​:
<configuration><settings><setting name="defaultExecutorType" value="BATCH"/> <!-- 全局生效 --></settings>
</configuration>
  • ​​单次会话配置(Spring 整合)​​:
SqlSession batchSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
try {UserMapper mapper = batchSession.getMapper(UserMapper.class);// 执行批量操作batchSession.commit();
} finally {batchSession.close();
}

三、Spring 框架深度整合

3.1 配置批处理 SqlSessionTemplate(Java Config)

@Configuration
@MapperScan(basePackages = "com.example.mapper") // 自动扫描 Mapper 接口
public class MyBatisBatchConfig {@Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);// 配置全局执行器为 BATCHorg.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();configuration.setDefaultExecutorType(ExecutorType.BATCH);factoryBean.setConfiguration(configuration);return factoryBean.getObject();}@Beanpublic SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {// 显式指定批处理模式return new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH);}
}

3.2 DAO 层注入与使用

@Repository
public class UserDaoImpl implements UserDao {@Autowiredprivate SqlSessionTemplate batchSqlSession;@Override@Transactionalpublic void batchInsert(List<User> users) {UserMapper mapper = batchSqlSession.getMapper(UserMapper.class);mapper.insertBatch(users);}
}

四、配置特性解析

1. 执行器类型控制​​

  • 通过 SqlSessionFactoryBean.setConfiguration() 设置全局执行器
  • 或通过 SqlSessionTemplate 构造函数指定(优先级更高)

2. ​​事务管理集成​​

  • 结合 @Transactional 注解确保批量操作原子性
  • 推荐在 Service 层方法添加注解,而非 DAO 层

3. 性能优化配置​​

# application.yml
mybatis:configuration:default-executor-type: BATCHmap-underscore-to-camel-case: trueglobal-config:db-config:id-type: auto

五、最佳实践建议

1. ​​组合使用配置​​

@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);
}

2. 连接池优化​​

spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5

3. ​​批量大小控制​​


int batchSize = 500;
SqlSession batchSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
try {UserMapper mapper = batchSession.getMapper(UserMapper.class);for (int i = 0; i < users.size(); i++) {mapper.insert(users.get(i));if (i % batchSize == 0) {batchSession.commit();batchSession.clearCache(); // 清理缓存}}batchSession.commit();
} finally {batchSession.close();
}

通过 Java Config 方式可实现更细粒度的配置控制,结合 Spring Boot 的自动配置特性,既能保持配置简洁性,又能满足高性能批量操作需求。建议生产环境采用混合配置模式:基础配置使用 YAML,特殊场景通过 Java Config 覆盖。

http://www.dtcms.com/wzjs/93486.html

相关文章:

  • 网上申报身份证浙江seo外包费用
  • 淮安网站建设方案推广软文代写
  • 太仓市质监站网址搜索引擎的网站
  • 深圳集团网站建设报价数据查询网站
  • 那种web网站开发文档杭州互联网公司排名榜
  • 做科技汽车的视频网站有哪些内容免费做网站怎么做网站吗
  • 动画设计和动漫设计优化大师官网下载安装
  • 自己做的网站怎么排名网址大全浏览器主页
  • 龙华建网站公司电商运营工作内容
  • 微信小程序推广方法seo公司seo教程
  • 佛山南海网站建设网站seo优化运营
  • 做服装团购有哪些网站郑州网站设计有哪些
  • 网站的种类近两年成功的网络营销案例
  • wordpress自动切换手机主题宁波seo外包优化
  • 众创空间网站建设网站seo优化推广外包
  • 徐州市城乡建设局官方网站深圳广告策划公司
  • 有哪些做ppt的网站有哪些免费com网站域名注册
  • 网站怎么建立数据库chrome google
  • 企业战略管理咨询公司北京seoqq群
  • 宣传网站怎么做的aso优化{ }贴吧
  • 石家庄网站建设服务百度推广电话客服24小时
  • 网站页面制作视频搜索引擎优化是指
  • 网站做贷款许可证百度关键词搜索查询
  • 百货批发网站建设网络营销师证书有用吗
  • 网站建设之开展电子商务网络推广营销方法
  • 惠州网站制作推广公司排名网络优化的三个方法
  • 做编程的 网站有哪些方面温州seo外包公司
  • 网站服务器的搭建免费下载百度软件
  • 做网站办什么类型营业执照优化大师是什么
  • 企业网站创建小结百度搜索风云榜