实战day07(四)----导入商品数据

一、dao

我们写一个sql,要包含:商品Id、商品标题、商品卖点、商品价格、商品图片、分类id。

select a.id, a.title, a.sell_point, a.price, a.image, b.name category_name from tb_item a left join tb_item_cat b on a.cid=b.id where a.`status`=1
创建一个pojo,用于接收这个返回结果。


创建dao层。包含:ItemMapper和ItemMapper.xml


分析:

1、查询所有商品数据。

2、循环把商品数据添加到索引库。使用solrJ实现。

3、返回成功。返回E3Result

把solrJ的jar包添加到工程。


二、solrJ维护索引库

2.1 solrJ添加索引库

1、把solrJ的jar包添加到工程。

2、创建一个SolrServer对象。创建一个和sorl服务的连接。HttpSolrServer。

3、创建一个文档对象。SolrInputDocument。

4、向文档对象中添加域。必须有一个id域。而且文档中使用的域必须在schema.xml中定义。

5、把文档添加到索引库

6、Commit。

@Test
public void addDocument() throws SolrServerException, IOException {
	// 创建一个SolrServer对象,创建一个连接。参数solr服务的url
	SolrServer solrServer = new HttpSolrServer("http://192.168.25.128:8080/solr/collection1");
	// 创建一个文档对象SolrInputDecument
	SolrInputDocument document = new SolrInputDocument();
	// 向文档对象中添加域。文档中必须包含一个id域,所有的域的名称必须在schema.xml中定义。
	document.addField("id", "doc01");
	document.addField("item_title", "测试商品01");
	document.addField("item_price", 1000);
	// 把文档写入索引库
	solrServer.add(document);
	// 提交
	solrServer.commit();
}

三、service


e3-search-interface中创建接口类:

public interface SearchItemService {
	E3Result importAllItems();
}
e3-search-service中创建实现类:
/**
 * 索引库维护Service
 */
@Service
public class SearchItemServiceImpl implements SearchItemService {

	@Autowired
	private ItemMapper itemMapper;

	@Autowired
	private SolrServer solrServer;

	@Override
	public E3Result importAllItems() {

		try {
			// 查询商品列表
			List<SearchItem> itemList = itemMapper.getItemList();
			// 遍历商品列表
			for (SearchItem searchItem : itemList) {
				// 创建文档对象
				SolrInputDocument document = new SolrInputDocument();
				// 向文档对象中添加域
				document.addField("id", searchItem.getId());
				document.addField("item_title", searchItem.getTitle());
				document.addField("sell_point", searchItem.getSell_point());
				document.addField("price", searchItem.getPrice());
				document.addField("image", searchItem.getImage());
				document.addField("category_name", searchItem.getCategory_name());
				// 把文档对象写入索引库
				solrServer.add(document);
			}
			// 提交
			solrServer.commit();
			// 返回成功
			return E3Result.ok();
		} catch (Exception e) {
			e.printStackTrace();
			return E3Result.build(500, "数据导入时发生异常");
		}
	}
}

发布服务:


表现层引入依赖:


引入服务:


该install的install。启动e3-manager, e3-content, e3-search, e3-manager-web




四、controller


重新启动e3-manager-web


后台报错:



这是因为ItemMapper.xml并没有复制到classes目录下。


再启动,后台报错,sell_point字段错误,排查原因


最后,导入成功




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值