BeetlSQL 3.3.13 发布,Java 的 DAO 工具
本周又发布了一个修复版本 修复了Saga事物嵌套回滚的Bug 修复注解实现TargetAdditional在翻页查询中不起作用的Bug 感谢网友使用BeetlSQL的高阶功能并给予详细反馈 Saga事务例子 SagaContext sagaContext = SagaContext.sagaContextFactory.current(); try { sagaContext.start(gid); //模拟调用俩个微服务,订单和用户 rest.postForEntity(orderAddUrl, null,String.class, paras); rest.postForEntity(userBalanceUpdateUrl, null,String.class, paras); if (1 == 1) { throw new RuntimeException("模拟失败,查询saga-server 看效果"); } sagaContext.commit(); } catch (Exception e) { log.info("error " + e.getMessage(),e); log.info("start rollback " + e.getMessage()); sagaContext.rollback(); return e.getMessage(); } TargetAdditional 在多租户使用例子,添加租户路由信息 SchemaTenantUser user = sqlManager.unique(SchemaTenantUser.class,1); String sql = "select * from ${schema}.sys_user "; List<SchemaTenantUser> list = sqlManager.execute(sql,SchemaTenantUser.class,new HashMap()); System.out.println(list.get(0)); 模型定义 @Data @Table(name="${schema}.sys_user") @SchemaTenant public static class SchemaTenantUser{ @Auto private Integer id; @Column("name") private String name; } /** * 每个租户一个库 */ @Retention(RetentionPolicy.RUNTIME) @Target(value = {ElementType.TYPE}) @Builder(SchemaTenantContext.class) //注解实现类 public @interface SchemaTenant { } public class SchemaTenantContext implements TargetAdditional { public static ThreadLocal<String> tenantSchemaLocals = new ThreadLocal<>(); @Override public Map<String, Object> getAdditional(ExecuteContext ctx, Annotation an) { String schema = tenantSchemaLocals.get(); if(schema==null){ throw new IllegalStateException("缺少租户信息"); } Map map = new HashMap(); map.put("schema",schema); return map; } } Maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.3.13-RELEASE</version> </dependency> BeetlSQL 研发自2015年,目标是提供开发高效,维护高效,运行高效的数据库访问框架,它适用范围广,性能高,维护性好,写起数据库访问代码特别顺滑。目前支持的数据库如下 传统数据库:MySQL,MariaDB,Oralce,Postgres,DB2,SQL Server,H2,SQLite,Derby,神通,达梦,华为高斯,人大金仓,PolarDB 等 大数据:HBase,ClickHouse,Cassandar,Hive 物联网时序数据库:Machbase,TD-Engine,IotDB SQL查询引擎:Drill,Presto,Druid 内存数据库:ignite,CouchBase 阅读文档源码和例子在线体验 BeetlSQL也支持IDEA插件,提供向导和自动提示