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

高级web程序设计 jsp网站开发bt磁力搜索引擎

高级web程序设计 jsp网站开发,bt磁力搜索引擎,wordpress 微信 登陆,wordpress相册代码在 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/247596.html

相关文章:

  • 百度广州分公司容易进吗网络优化培训要多少钱
  • 衡阳网站制作营销伎巧第一季
  • WordPress的黑色框郑州网站关键词优化公司哪家好
  • 牛商网网站模板搜索引擎推广
  • 个人购物网站seo网站快速排名
  • 有了域名怎样做淘客网站qq引流推广软件免费
  • php网站屏蔽词怎么做营销组合策略
  • wordpress建站事例线上营销推广方式都有哪些
  • wordpress调用摘要深圳seo优化seo优化
  • 织梦本地做网站抖音seo优化怎么做
  • 做内衣批发的网站怎么注册中视频账号
  • 四川建设局网站免费的行情网站app软件
  • 个人网站隐藏服务器真实ip展示型网站有哪些
  • 网站开发功能需求表网站设计的流程
  • wifiu盘做网站揭阳百度快照优化排名
  • web开发就是做网站吗百度有免费推广广告
  • 网站建设好与管理在哪就业可以下载新闻视频的网站
  • b站镜像网站是谁做的百度投诉电话客服24小时
  • wordpress迁站百度关键词优化工具
  • 电商网站前端开发seo搜索引擎优化关键词
  • 蓟州农家院如何做网站开通网站需要多少钱
  • 我的世界怎么自己做皮肤并上传网站动态网站的制作与设计
  • html5和ria网站设计郑州seo技术顾问
  • 公司注册网上核名时总是提示录入字号品牌词优化
  • 自己怎做网站网店seo名词解释
  • 广州有哪些做网站的公司网络营销经典案例
  • 怎么样免费给网站做优化seo怎么发外链的
  • 论文网站开发代运营公司排名
  • 如何建设正规彩票网站宣传渠道和宣传方式有哪些
  • 正规网站建设费用seo行业岗位