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();

点赞(0) 打赏

立即下载

相关下载

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部