当前位置: 首页 > news >正文

模板网站可以做推广吗全国疫情防控最新数据

模板网站可以做推广吗,全国疫情防控最新数据,给公司网站做seo,做网站需要走哪些程序目录 问题背景 解决方案 编写es的mapper 动态dsl编写 使用mapper获取动态dsl 远程调用restful api查询 问题背景 在大数据量的业务系统中,一般都会引入Elasticsearch来作为搜索引擎,而搜索的条件又是多种多样的。回顾下,如果是mysql等…

目录

问题背景

解决方案

编写es的mapper

动态dsl编写

使用mapper获取动态dsl

远程调用restful api查询


问题背景

在大数据量的业务系统中,一般都会引入Elasticsearch来作为搜索引擎,而搜索的条件又是多种多样的。回顾下,如果是mysql等这种关系型数据库来作为存储介质呢?我们是不是可以通过mybatis的动态sql解析功能就能轻轻松松的搞定。

或许你也许会问,es不是提供了java版本的sdk么,通过sdk可以动态的构建dsl语句的,确实如此,不过这样的可读性远远没有将dsl放在xml中,可以看下在java代码中操作es的代码案例

public static void main(String[] args) throws IOException {// 初始化RestHighLevelClientRestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));RestHighLevelClient client = new RestHighLevelClient(builder);// 创建查询条件SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.matchQuery("fieldname", "value")); // 动态查询字段名和值// 创建搜索请求SearchRequest searchRequest = new SearchRequest("indexname"); // 指定索引名searchRequest.source(searchSourceBuilder);// 执行搜索SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);// 处理搜索结果SearchHits hits = searchResponse.getHits();for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}// 关闭客户端client.close();}

mybatis的执行流程中,就是通过SqlSessionFactory创建SqlSession,有了SqlSession可以开始执行sql,执行sql的时候,会将动态的sql转成一个MappedStatement,通过这个可以创建BoundSql,我们是不是可以利用mybatis执行mysql的一部分功能,拿到BoundSql,然后通过http的方式直接远程调用es查询?

答案是可行的

解决方案

编写es的mapper

package com.tml.mouseDemo.mapper;import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;@Mapper
public interface ESMapper {String queryOrderById(@Param("name") String name, @Param("id") String id);
}

动态dsl编写

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tml.mouseDemo.mapper.ESMapper"><select id="queryOrderById" resultType="string">{"query":{"bool":["term":{"id":"${id}"}<if test="name!=null">,"term":{"name":"${name}"}</if>]}}</select>
</mapper>

dsl的语法就不多介绍了,在这个xml文件中,可以使用mybatis的<if> <when> <choose> <foreach>等诸多标签,通过这些个标签的组合,你可以编写多条件检索的复杂dsl

使用mapper获取动态dsl

    @Testpublic void testEs() {Map<String, String> map = new HashMap<>();map.put("name", "tml");map.put("id", "hello world");BoundSql bSql = sessionFactory.getConfiguration().getMappedStatement("queryOrderById").getBoundSql(map);log.info("bSql:{}", bSql.getSql());
}

其中,sessionFactory是通过spring的自动注入的

@Autowired
private SqlSessionFactory sessionFactory;

远程调用restful api查询

拿到dsl以后,就可以通过http远程调用restful api拿到结果了,通过httpClient或者是RestTemplate实现都行,这里就不赘述了。

http://www.ds6.com.cn/news/51468.html

相关文章:

  • 联通北京网站备案推广的软件有哪些
  • 建设项目竣工验收网站网络最有效的推广方法
  • 十大货源网站大全如何制作链接推广
  • 小程序服务开发公司网站优化公司推荐
  • 专门做私人定制旅游的网站短视频优化
  • 全国未成年人思想道德建设网站谷歌优化排名哪家强
  • 龙岗网站建设优化网站关键词排名
  • 全国加盟网站建设北京seo公司华网白帽
  • 阿里云9元做网站简述网站推广的方式
  • vue做的pc线上网站南京seo公司教程
  • 网站工具查询网站怎么创建
  • 如何制作公司免费网站微商软文大全
  • 做滤芯的网站电商平台有哪些
  • 免费书画网站怎么做的关键词林俊杰mp3
  • c2c平台如何盈利优化大师官网下载
  • 宜春网站制作河北seo人员
  • 微信定制开发 网站开发郑州seo询搜点网络效果佳
  • 自己做网站卖产品怎么样互联网+营销策略怎么写
  • 网站模板设计教程百度快照怎么发布
  • 珠宝销售网站源码最近的大新闻
  • 做租人网站犯法吗win7系统优化
  • 建设网站对公司起什么作用是什么意思电商网站有哪些
  • 网站建设费会计账务处理世界杯排名
  • 网站开发外包费用国家培训网官网
  • 北京公司黄页seo人工智能
  • 蒙牛网站建设企业网站设计价格
  • 做外卖那些网站好旅游最新资讯
  • 东莞网站建设服务百度软件中心官网
  • 为什么无法再社保网站上做减员策划方案网站
  • 上海平台网站建设公司seo如何优化关键词排名