Skip to content

一个超轻量级,高性能的快速批插工具,可以和mybatis,hibernate任何orm框架结合使用

License

Notifications You must be signed in to change notification settings

bryan31/liteBatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

##liteBatch liteBatch是一个轻量级,高性能,高通用的批插框架。

  • 能够像普通insert一样在循环中插入PO
  • 异步执行,无阻塞
  • 维护一个缓冲的队列,到达配置的阀值之后批次提交
  • 可以和各种ORM结合使用
  • 兼容各种数据库
  • 适应所有的VO,自动生成脚本
  • 性能高效,测试机上测试大概4w+/秒
  • 自动处理各种基础类型的数据
  • 支持自定义的映射和过滤字段

##更新记录 1.0.1

  • 优化了队列控制的实现机制
  • 增加了redis队列的实现
  • 选择使用redis队列时候,如果重启或者宕机,数据不会丢失,100%数据完整性
  • 增加了队列健康度监控机制,减少了线程开销

1.1.0

  • 添加文件批量插入操作
  • 优化代码结构,添加handler和queue上下文
  • 实现Alias系列注解,可以对javabean自定义别名映射到数据库字段或表
  • 添加flush方法,实现手动同步数据到对应数据目标(DB或file)
  • 添加syn标记,表示是否手动同步数据,默认异步批次操作
  • 修复一些bug

##快速使用 也可以参考test工程的testUnit

		RowBatchListener<Person> rowBatchListener = RowBatchListenerBuilder.buildRedisRowBatchListener(jdbcTemplate, 5000, Person.class, "localhost",6379);
		try {
			Random random = new Random();
			Person person = null;
			for (int i = 0; i < 66000; i++) {
				person = new Person();
				person.setAge(random.nextInt(100));
				person.setAddress("XX马路1号");
				person.setCompany("天天 向上科技有限公司");
				person.setName("张三");
				person.setCreateTime(new Date());
				rowBatchListener.insertOneWithBatch(person);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
		}

##注意 在mysql数据库下,需要注意以下几点

  • 驱动包一定得5.1.13版本以上(含)
  • 在jdbc连接url里得加上rewriteBatchedStatements=true参数

About

一个超轻量级,高性能的快速批插工具,可以和mybatis,hibernate任何orm框架结合使用

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages