このリリース@昨年の夏、@Murongの提案
- マッパーのデフォルトのメソッド呼び出し、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、Shentong、Dameng、Huawei Gauss、NPC Jincang、PolarDB、GBase8s、GreatSQLなど。
- ビッグデータ:HBase、ClickHouse、Cassandar、Hive、GreenPlum
- IoT時系列データベース:Machbase、TD-Engine、IotDB
- SQLクエリエンジン:Drill、Presto、Druid
- インメモリデータベース:ignite、CouchBase