dbVisitor 同一数据库拜访库,更新 v6.4.0,支撑 ElasticSearch 数据源
dbVisitor 6.4.0 正式发布,新增了对 ElasticSearch 数据源的支持。至此,dbVisitor 不仅支持如 MySQL、Oracle 等关系型数据库,还涵盖了 Redis、MongoDB 和 ElasticSearch 等非关系型数据库。项目计划在未来继续...
应用介绍
<dependency> <groupId>net.hasor</groupId> <artifactId>dbvisitor</artifactId> <version>6.4.0</version></dependency><dependency> <groupId>net.hasor</groupId> <artifactId>jdbc-elastic</artifactId> <version>6.4.0</version></dependency>
影响范围
- 新增 jdbc-elastic 驱动 及 Es6Dialect、Es7Dialect
- dbvisitor-driver 连接治理机制
- jdbc-mongo 驱动稳定性
- TypeHandlerRegistry 类型匹配逻辑
更新内容
- 新增
- 新增
jdbc-elastic驱动,支撑应用标准 JDBC 接口应用 QueryDSL 操作 ElasticSearch。 jdbc-elastic支撑原生 REST API 风格敕令(GET/POST/PUT/DELETE)及 SQL Hint 语法。jdbc-elastic支撑PreparedStatement占位符?,支撑Statement.RETURN_GENERATED_KEYS主动返回_id。jdbc-elastic支撑LambdaTemplate和 Mapper 接口,供给类型安然的 CRUD 操作。jdbc-elastic支撑预读模式(Pre-read),有效处理大年夜成果集,避免内存溢出。SqlDialectRegister支撑根据驱动供给的数据库版本选择更细粒度的方言实现。jdbc-elastic支撑indexRefresh参数,可在写入操作后主动刷新索引。
- 新增
- 优化
- 优化
TypeHandlerRegistry对抽象类型的匹配逻辑,进步类型处理器的查找精确性。 - 优化 MongoDB 和 Redis 在履行多条语句时的缺点处理逻辑,确保单条语句掉败能精确中断后续履行。
- 同一项目中的
ObjectMapper对象应用,削减资本消费。
- 优化
- 修复
- 修复
JdbcConnection在封闭时未触发AdapterConnection封闭导致连接泄漏的问题。 - 修复
MongoResultBuffer潜在的文件句柄泄漏问题。 - 修复 MongoDB 在经由过程 Session 创建 Mapper 时无法主动发明方言的问题。
- 修复
AdapterContainer在executeUpdate掉败后状况未重置,导致后续查询报错的问题。 - 修复
MongoConn和JedisConn中的响应处理逻辑缺点。
- 修复
ElasticSearch 若何应用?
应用 JdbcTemplate 履行敕令// 1. 获取 ElasticSearch 连接Connection esConn = ...; // 参考文档:驱动适配器 > JDBC Elastic > 安装与设备JdbcTemplate jdbc = new JdbcTemplate(esConn);// 2. 插入数据jdbc.execute("POST /my_index/_doc/1 { \"name\": \"mali\", \"age\": 26 }");// 3. 查询数据List<Map<String, Object>> list = jdbc.queryForList( "POST /my_index/_search { \"query\": { \"match_all\": {} } }");// 4. 更新数据jdbc.execute("POST /my_index/_update/1 { \"doc\": { \"age\": 27 } }");// 5. 删除数据jdbc.execute("DELETE /my_index/_doc/1");
应用 Mapper 接口操作
// 1. 定义实体类@Table("my_index")public class UserInfo { @Column(value = "uid", primary = true) private String uid; @Column("name") private String name; // getters and setters}// 2. 定义 Mapper 接口@SimpleMapperpublic interface UserInfoMapper extends BaseMapper<UserInfo> { @Insert("POST /my_index/_doc { \"uid\": #{user.uid}, \"name\": #{user.name} }") int saveUser(@Param("user") UserInfo user); @Query("POST /my_index/_search { \"query\": { \"term\": { \"uid\": #{uid} } } }") UserInfo loadUser(@Param("uid") String uid);}// 3. 应用 Mappertry (Session session = config.newSession(esConn)) { UserInfoMapper mapper = session.createMapper(UserInfoMapper.class); // 保存 UserInfo user = new UserInfo(); user.setUid("1111"); user.setName("mali"); mapper.saveUser(user); // 查询 UserInfo loaded = mapper.loadUser("1111");}
应用 LambdaTemplate 操作
dbVisitor 6.4.0 正式宣布,新增了对 ElasticSearch 数据源的支撑。至此,dbVisitor 不仅支撑如 MySQL、Oracle 等关系型数据库,还涵盖了 Redis、MongoDB 和 ElasticSearch 等非关系型数据库。项目筹划在将来持续扩大数据源种类,以实现“One API Access Any DataBase”的愿景。
// 1. 获取 ElasticSearch 连接LambdaTemplate lambda = new LambdaTemplate(esConn);// 2. 插入数据UserInfo user = new UserInfo();user.setUid("1001");user.setName("test_user");lambda.insert(user);// 3. 查询数据UserInfo loaded = lambda.query(UserInfo.class) .eq(UserInfo::getUid, "1001") .queryForObject();
©软件著作权归作者所有。本站所有软件均来源于网络,仅供学习使用,请支持正版!
转载请注明出处: FQPY » dbVisitor 同一数据库拜访库,更新 v6.4.0,支撑 ElasticSearch 数据源

发表评论 取消回复