淘淘商城第48讲——导入商品数据到索引库之service层开发

xiaoxiao2021-02-28  79

首先在taotao-search-interface工程中新建一个接口,如下图所示。 可以看到以上importAllSearchItems方法的返回值类型是TaotaoResult,当你纠结返回值是什么的时候,使用TaotaoResult就行了。

然后在taotao-search-service工程中新建以上接口的一个实现类,例如SearchServiceImpl.java,该实现类的代码如下所示。

package com.taotao.search.service.impl; import java.util.List; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.common.SolrInputDocument; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.taotao.common.pojo.SearchItem; import com.taotao.common.pojo.TaotaoResult; import com.taotao.search.mapper.SearchItemMapper; import com.taotao.search.service.SearchService; @Service public class SearchServiceImpl implements SearchService { @Autowired private SearchItemMapper mapper; @Autowired private SolrClient solrClient; @Override public TaotaoResult importAllSearchItems() throws Exception { // 1. 注入Mapper // 2. 调用Mapper的方法,查询出所有的商品数据 List<SearchItem> serarchItemList = mapper.getSerarchItemList(); // 3. 通过SolrJ将这些数据写入到索引库中 // 3.1 创建HttpSolrClient对象 // 3.2 创建SolrInputDocument对象,是为了将列表中的元素一个个放到索引库当中 for (SearchItem searchItem : serarchItemList) { SolrInputDocument document = new SolrInputDocument(); document.setField("id", searchItem.getId().toString()); // 这里是字符串,所以需要转换 document.setField("item_title", searchItem.getTitle()); document.setField("item_sell_point", searchItem.getSell_point()); document.setField("item_price", searchItem.getPrice()); document.setField("item_image", searchItem.getImage()); document.setField("item_category_name", searchItem.getCategory_name()); document.setField("item_desc", searchItem.getItem_desc()); // 添加到索引库 solrClient.add(document); } // 提交 solrClient.commit(); return TaotaoResult.ok(); } }

以上实现类的代码中用到了SearchItemMapper,因此Spring容器要能够管理它才行。我们打开applicationContext-dao.xml文件,可以看到扫描包的范围是com.taotao.search.mapper,这说明之前我们就已经配置好了,因此这里不用做任何修改。 这里面还有一个问题,service层要用到一个HttpSolrClient对象,而Spring容器默认是没有管理这个对象的,因此我们得再单独建一个applicationContext-solr.xml文件来管理,如下图所示。 服务编写完之后,下面要做的便是发布服务了,即在applicationContext-service.xml文件中添加如下配置。

<dubbo:service interface="com.taotao.search.service.SearchService" ref="searchServiceImpl" timeout="300000" />

截图如下: 至此,把商品数据导入到索引库中的service层的代码便编写完毕了!

转载请注明原文地址: https://www.6miu.com/read-29507.html

最新回复(0)