1. 配置文件:
<!-- 批量保存系统设置 -->
<insert id="saveBatch" param<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.leimingtech.service.module.setting.dao.mapper.SettingMapper">eterType="java.util.List" >
insert into shop_setting(name,value)values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.name},#{item.value})
</foreach>
</insert>
<!-- 保存系统设置 -->
<insert id="save" parameterType="com.leimingtech.core.entity.base.Setting">
insert into shop_setting(name,value)values(#{name},#{value})
</insert>
</mapper>
@SqlMapper
public interface SettingMapper{
/**
* 批量保存系统设置
* @param setting
*/
void saveBatch(List<Setting> setting);
/**
* 保存系统设置
* @param setting
*/
void save(Setting setting);
}
package com.leimingtech.service.module.setting.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.leimingtech.core.entity.base.Setting;
public interface SettingDao {
/**
* 保存系统设置
* @param setting
*/
void save(Setting setting);
/**
* 保存系统设置
* @param setting
*/
void saveBatch(List<Setting> setting);
}
package com.leimingtech.service.module.setting.dao.impl;
import com.leimingtech.core.entity.base.Setting;
import com.leimingtech.service.module.setting.dao.SettingDao;
import com.leimingtech.service.module.setting.dao.mapper.SettingMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Service("settingDao")
public class SettingDaoImpl implements SettingDao {
@Resource
private SettingMapper settingMapper;
/**
* 保存系统设置
* @param setting
*/
@Override
public void save(Setting setting){
settingMapper.save(setting);
}
/**
* 保存系统设置
* @param setting
*/
@Override
public void saveBatch(List<Setting> setting){
settingMapper.saveBatch(setting);
}
}
测试类:
package sgnctest;
import com.leimingtech.core.entity.base.Setting;
import com.leimingtech.core.filter.XSSSecurityManager;
import com.leimingtech.service.module.frontorganization.service.FrontOrganizationService;
import com.leimingtech.service.module.ncorg.service.CreNcOrgService;
import com.leimingtech.service.module.projectinfo.service.CreProjectInfoService;
import com.leimingtech.service.module.setting.service.SettingService;
import net.sf.json.JSONArray;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.BeansException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.UUID;
public class nctest {
private ClassPathXmlApplicationContext context = null;
@Before
public void before(){
context = new ClassPathXmlApplicationContext("context/applicationContext.xml");
// context.start();
}
/**
* 测试批量插入
*/
@Test
public void insertListBatch(){
System.out.println(context);
SettingService settingService = (SettingService)context.getBean("settingService");
// settingService.save("12345","45556");
List<Setting> list = new ArrayList<Setting>();
for (int i = 0; i <2000 ; i++) {
Setting setting = new Setting();
setting.setName("name"+i);
setting.setValue("value"+i);
list.add(setting);
}
long start = Calendar.getInstance().getTimeInMillis();
settingService.saveBatch(list);
long end = Calendar.getInstance().getTimeInMillis();
System.out.println("runtime:"+(end - start));
}
@Test
public void insertList(){
SettingService settingService = (SettingService)context.getBean("settingService");
List<Setting> list = new ArrayList<Setting>();
for (int i = 0; i <2000 ; i++) {
Setting setting = new Setting();
setting.setName("name"+i);
setting.setValue("value"+i);
list.add(setting);
}
long start = Calendar.getInstance().getTimeInMillis();
for(Setting setting:list){
settingService.save(setting.getName(),setting.getValue());
}
long end = Calendar.getInstance().getTimeInMillis();
System.out.println("runtime:"+(end - start));
}
}
结果比较:
测试结果:
批量插入2000条数据方法执行时间:455
循环调用插入2000条数据执行时间:102240
通过时间比较性能相差200多倍
分享到:
相关推荐
通过上面的示例,我们可以看到 Mybatis 插入一条或批量插入 返回带有自增长主键记录的实例的实现方式。在 MySQL 中,我们使用 `useGeneratedKeys` 和 `keyProperty` 属性,而在 Oracle 中,我们使用 `selectKey` ...
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置...通过实践和进一步学习,你将能够充分利用 MyBatis 的强大功能,构建高效的数据访问层。
在`spring-servlet.xml`中,我们可以导入Spring的业务层、服务层和数据访问层的配置,以及MyBatis的相关配置。这样,我们就完成了Spring与MyBatis的集成,可以在Web工程中方便地进行数据库操作。 总结一下,Spring...
SpringMVC和MyBatis是两个非常流行的Java Web开发框架,它们在企业级应用中广泛使用。...通过学习和实践,你将能够更好地理解和掌握这两种框架的协同工作原理,为后续的Java Web开发打下坚实的基础。
本教程将带你一步步走进MyBatis的世界,通过"myIbatis入门示例、myIbatis helloworld示例、myIbatis第一个示例",让你快速掌握MyBatis的核心概念和基本用法。 1. MyBatis简介 MyBatis由Mike Keith和Clinton Begin...
总之,MyBatis、Spring和SpringMVC的整合为Java Web开发提供了一个强大而灵活的解决方案,通过合理的配置和编码,开发者可以构建出高效、可扩展的应用系统。这个整合过程涉及到的细节繁多,但只要掌握了基本原理和...
这种整合能够充分利用MyBatis的SQL映射功能和SpringMVC的MVC设计模式,实现数据访问层与业务逻辑层的解耦。 在SpringMVC框架中,MyBatis作为数据访问层的组件,负责处理数据库交互。首先,我们需要在`...
本示例聚焦于如何在SpringMVC 3.0和MyBatis 3.0环境中实现分页功能,这在处理大量数据时尤其重要,能够提高用户体验并减轻服务器压力。 **SpringMVC 3.0** SpringMVC是Spring框架的一部分,它是一个基于模型-视图-...
SpringMvc3和MyIbatis3是当前流行的Java企业级开发框架和持久层框架,它们各自拥有强大的功能和灵活性,适合用于复杂、高性能的应用系统。SpringMvc是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架...
MyiBatis_用户手册包含以下资源: 1.iBatis2.0 开发指南中文版 2.MyiBatis3 用户指南中文版 3.MyiBatis Spring 1.0.0-snapshot 参考文档 以上都是pdf格式文档
综上所述,"springMVC+myibatis的maven项目架构"是一个完整的Java Web解决方案,它利用SpringMVC处理Web请求,MyBatis负责数据访问,而Maven确保了项目的构建和依赖管理。此外,项目还提供了实用的Word和Excel工具类...
MyIbatis3.0入门+进阶实例,直接把资源工程导入到MyEclise里就可以运行,导入到Eclipse里也可以, 包含: ---ibatis_3_学习笔记.pdf ---ibatis3__发布_入门示例.pdf 可以带你熟练使用MyIbatis3.0,实例代码对MyIbatis3.0...
标题 "SpringMVC3.0+MyIbatis3.0(分页示例)" 提到的是一个集成SpringMVC和MyBatis的项目,并且包含了分页功能的实现。这通常意味着我们要探讨的是如何在Java Web开发环境中整合这两个流行的框架,并实现数据的分页...
有敢于网上下载多不适用,故作一层次分明功能较全面(列表,登录验证,增加)的功能验证性web程序以为分享,因程序为功能验证性程序,故页面之间没有全套连接,可自行通过程序反推,本程序为实用性程序,已实际项目...
1. **模型-视图-控制器**:通过Model-View-Controller架构模式分离业务逻辑、用户界面和数据。 2. **注解驱动**:使用注解简化配置,如@Controller、@RequestMapping等。 3. **拦截器**:自定义拦截器处理请求,实现...
1. **MyBatis概述**:了解MyBatis的基本概念,包括它的起源、发展和主要功能,以及与Hibernate、JDBC等其他框架的对比。 2. **安装与配置**:学习如何在项目中引入MyBatis,包括添加依赖、配置mybatis-config.xml...
【标题】"myibatis开发官方帮助文档"涵盖了MyBatis这一流行持久层框架的核心概念、使用方法和最佳实践。MyBatis是一个优秀的Java库,它允许开发者将SQL语句直接集成到Java代码中,提供了比传统的JDBC更为便捷且灵活...
通过XML配置文件或注解,MyBatis 可以动态地执行SQL查询、更新、删除和插入操作。它提供了一种灵活的方式来进行数据库操作,避免了传统的JDBC代码的繁琐。 **Hibernate** Hibernate 是一个强大的ORM框架,它可以将...
标题 "springmvc+spirng+myibatis jar包" 描述的是一个包含了一系列Java库的压缩文件,这些库主要用于构建基于Spring MVC、Spring框架和MyBatis的Web应用程序。这个组合是Java后端开发中常见的一种技术栈,用于处理...