Java之品優購課程講義_day09(4)
阿新 • • 發佈:2018-12-09
品優購-批量資料匯入 3.1 需求分析 編寫專門的匯入程式,將商品資料匯入到 Solr 系統中 3.2 查詢商品資料列表3.2.1 工程搭建 (1)建立 pinyougou-solr-util(jar) ,引入 pinyougou-dao 以及 spring 相關依賴 (2)建立 spring 配置檔案
內容為:
< context:component-scan base-package="com.pinyougou.solrutil"> </context:component-scan> 程式碼編寫 建立 com.pinyougou.solrutil 包,建立類 SolrUtil ,實現商品資料的查詢(已稽核商品)
@Component public class SolrUtil { @Autowired private TbItemMapper itemMapper; /** * 匯入商品資料 */ public void importItemData(){ TbItemExample example=new TbItemExample(); Criteria criteria = example.createCriteria(); criteria.andStatusEqualTo("1");//已稽核 List<TbItem> itemList = itemMapper.selectByExample(example); System.out.println("===商品列表==="); for(TbItem item:itemList){ System.out.println(item.getTitle()); } System.out.println("===結束==="); } public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext("classpath*:spring/applicationContext*.xml"); SolrUtil solrUtil= (SolrUtil) context.getBean("solrUtil"); solrUtil.importItemData(); } }
3.1 資料匯入 Solr 索引庫 3.1.1 實體類 (1)將 demo 工程中添加了@Field 註解的實體類拷貝到 pinyougou-pojo 中 (2)在 pinyougou-pojo 中引入依賴
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-solr</artifactId> <version>1.5.5.RELEASE</version> </dependency>
3.1.1 新增 Solr 配置檔案 新增 applicationContext-solr.xml 到 spring 目錄
<solr:solr-server id="solrServer" url="http://127.0.0.1:8080/solr" />
<!-- solr 模板,使用 solr 模板可對索引庫進行 CRUD 的操作 -->
<bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
<constructor-arg ref="solrServer" />
</bean>
呼叫模板類匯入 solr 修改 pinyougou-solr-util 的 SolrUtil.java
@Autowired
private SolrTemplate solrTemplate;
/**
* 匯入商品資料
*/
public void importItemData(){
TbItemExample example=new TbItemExample(); Criteria criteria = example.createCriteria();
criteria.andStatusEqualTo("1");//已稽核
List<TbItem> itemList = itemMapper.selectByExample(example);
System.out.println("===商品列表===");
for(TbItem item:itemList){ System.out.println(item.getTitle());
}
solrTemplate.saveBeans(itemList);
solrTemplate.commit();
System.out.println("===結束===");
}
3.4 規格匯入動態域 3.4.1 @Dynamic 注 解 修改 TbItem.java ,新增屬性
@Dynamic @Field("item_spec_*")
private Map<String,String> specMap;
public Map<String, String> getSpecMap() {
return specMap;
}
public void setSpecMap(Map<String, String> specMap) {
this.specMap = specMap;
}
3.4.1 修改匯入工具
修改 pinyougou-solr-util 的 SolrUtil.java ,引入 fastJSON 依賴
/**
* 匯入商品資料
*/
public void importItemData(){
TbItemExample example=new TbItemExample(); Criteria criteria = example.createCriteria();
criteria.andStatusEqualTo("1");//已稽核
List<TbItem> itemList = itemMapper.selectByExample(example); System.out.println("===商品列表===");
for(TbItem item:itemList){
Map specMap= JSON.parseObject(item.getSpec());//將 spec 欄位中的 json 字元
串轉換為 map
item.setSpecMap(specMap);//給帶註解的欄位賦值 System.out.println(item.getTitle());
}
solrTemplate.saveBeans(itemList);
solrTemplate.commit(); System.out.println("===結束===");
}