本次发布@最后夏天,@慕容 提出的建议
- mapper的defaut method调用,支持jdk7,jkd8,jdk9,jdk10 ,jdk11,jdk12,jdk13,jdk14,jdk15,jdk16,jdk17
- 逻辑删除支持 ,内置查询(SQLManager,或者Query)的时候考虑逻辑删除字段,这需要配置sqlManager.setQueryLogicDeleteEnable 才能生效。
@Test
public void testLogicDelete(){
ProductOrder order = new ProductOrder();
order.setCreateDate(new Date());
order.setStatus(0);
sqlManager.insert(order);
long total = sqlManager.allCount(ProductOrder.class);
Assert.assertEquals(2,total);
//逻辑删除
sqlManager.deleteById(ProductOrder.class,order.getId());
total = sqlManager.allCount(ProductOrder.class);
//还是总是2
Assert.assertEquals(2,total);
ProductOrder dbOrder = sqlManager.unique(ProductOrder.class,order.getId());
Assert.assertEquals(1L,dbOrder.getVersion().longValue());
Query<ProductOrder> query = sqlManager.query(ProductOrder.class);
query.andEq("id",order.getId());
dbOrder = query.unique();
Assert.assertEquals(1L,dbOrder.getVersion().longValue());
//如下代码包测试逻辑删除部分,实际情况是需要配置QueryLogicDeleteEnable
//删除生成的缓存
sqlManager.refresh();
sqlManager.setQueryLogicDeleteEnable(true);
//考虑逻辑删除,查询不出来
dbOrder = sqlManager.single(ProductOrder.class,order.getId());
Assert.assertNull(dbOrder);
query = sqlManager.query(ProductOrder.class);
query.andEq("id",order.getId());
dbOrder = query.single();
Assert.assertNull(dbOrder);
//逻辑删除不在查询范围内
long newTotal = sqlManager.allCount(ProductOrder.class);
Assert.assertEquals(1,newTotal);
newTotal = sqlManager.all(ProductOrder.class).size();
Assert.assertEquals(1,newTotal);
ProductOrder template = new ProductOrder();
template.setId(order.getId());
int queryCount = sqlManager.template(template).size();
Assert.assertEquals(0,queryCount);
//恢复默认值
sqlManager.refresh();
sqlManager.setQueryLogicDeleteEnable(false);
}
dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetlsql</artifactId>
<version>3.14.0-RELEASE</version>
</dependency>
BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,写起数据库访问代码特别顺滑,不亚于 MyBatis。你不想写 SQL 也好,或者想更好地写 SQL 也好,BeetlSQL 都能满足这要求,目前支持的数据库如下
- 传统数据库:MySQL (包括支持MySQL协议的各种数据库), MariaDB ,Oralce ,Postgres (包括支持 Postgres 协议的各种数据库), DB2 , SQL Server ,H2 , SQLite , Derby ,神通,达梦,华为高斯,人大金仓,PolarDB,GBase8s,GreatSQL 等
- 大数据:HBase,ClickHouse,Cassandar,Hive,GreenPlum
- 物联网时序数据库:Machbase,TD-Engine,IotDB
- SQL查询引擎:Drill,Presto,Druid
- 内存数据库:ignite,CouchBase
这种缝合怪(mysql/oracle模式)魔改产品,只有java语言版的driver驱动包;其他主流语言支持,就呵呵哒!
2.oracle模式极其难用!