1. 程式人生 > >電商專案day10-1(Spring-data-Solr入門demo)

電商專案day10-1(Spring-data-Solr入門demo)

一.重新建立一個專案用於匯入資料庫的資料到solr索引庫中

1.新增相關jar包

2.配置相關的配置檔案

3.編寫基於junit的測試檔案

4.編寫scheme.xml中配置的域欄位與實體的對映關係

 @Field
    private Long id;
    @Field("item_title")
    private String title;

    private String sellPoint;
    @Field("item_price")
    private BigDecimal price;

    private Integer stockCount;

    private Integer num;

    private String barcode;
    @Field("item_image")
    private String image;

    private Long categoryid;

    private String status;

    private Date createTime;
    @Field("item_updatetime")
    private Date updateTime;

    private String itemSn;

    private BigDecimal costPirce;

    private BigDecimal marketPrice;

    private String isDefault;
    @Field("item_goodsid")
    private Long goodsId;

    private String sellerId;

    private String cartThumbnail;
    @Field("item_category")
    private String category;
    @Field("item_brand")
    private String brand;

    private String spec;
    @Field("item_seller")
    private String seller;

二.增刪改查以及分頁,條件查詢


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring/applicationContext-solr.xml")
public class SolrTest {

    @Autowired
    private SolrTemplate solrTemplate;

    /**
     * 新增商品到商品庫
     * 修改都是呼叫這個方法  saveBean方法
     */
    @Test
    public void addTest(){

        TbItem item = new TbItem();
        item.setId(1L);
        item.setTitle("蘋果maxs   移動4G  64G");
        item.setSeller("蘋果旗艦店");
        item.setBrand("蘋果");
        solrTemplate.saveBean(item);
        //必須提交
        solrTemplate.commit();
    }

    /**
     * 通過id查詢
     */
    @Test
    public void findByIdTest(){

        TbItem byId = solrTemplate.getById(1L, TbItem.class);
        System.out.println(byId.getId()+" " +byId.getTitle()+" "+byId.getBrand());
    }
    /**
     * 通過id刪除
     */
    @Test
    public void deleteTest(){

        solrTemplate.deleteById("1");
        solrTemplate.commit();
    }
    /**
     * 刪除所有資料
     */
    @Test
    public void deleteAllTest(){

        SolrDataQuery query = new SimpleQuery("*:*");
        solrTemplate.delete(query);
        solrTemplate.commit();
    }
    /**
     * 批量新增資料
     */
    @Test
    public void addAllTest(){
        ArrayList list = new ArrayList();
        for (long i = 1; i <= 100; i++) {
            TbItem item = new TbItem();
            item.setId(i);
            item.setTitle(i+"蘋果maxs   移動4G  64G");
            item.setSeller("蘋果"+i+"號旗艦店");
            item.setBrand("蘋果");
            list.add(item);
            //solrTemplate.saveBean(item);
            //必須提交
           // solrTemplate.commit();
        }
        solrTemplate.saveBeans(list);
        solrTemplate.commit();
    }
    /**
     * 分頁查詢
     */
    @Test
    public void findPageTest(){
        //設定查詢物件
        Query query = new SimpleQuery("*:*");
        //設定分頁條件
        query.setOffset(2);//設定分頁查詢起始值, 預設值 0 ,從第一天開始
        query.setRows(5);//每頁查詢記錄數
        ScoredPage<TbItem> tbItems = solrTemplate.queryForPage(query, TbItem.class);
        System.out.println("總記錄數:"+tbItems.getTotalElements());
        System.out.println("總頁數"+tbItems.getTotalPages());
        //當前頁資料列表
        List<TbItem> content = tbItems.getContent();
        for (TbItem item : content) {
            System.out.println(item.getId()+" "+item.getTitle()+" "+item.getBrand()+" "+item.getSeller());
        }
    }
    /**
     * 條件查詢   需求查詢  標題含有9    商家含有 5
     */
    @Test
    public void findMultilTest(){
        //設定查詢物件   注意一定要有查詢條件*:*
        Query query = new SimpleQuery("*:*");

        //構建查詢條件
        //支援鏈式程式設計
        Criteria criteria = new Criteria("item_title").contains("9").and("item_seller").contains("5");
        //把構建好的查詢物件賦值給查詢物件
        query.addCriteria(criteria);
        ScoredPage<TbItem> tbItems = solrTemplate.queryForPage(query, TbItem.class);
        System.out.println("總記錄數:"+tbItems.getTotalElements());
        System.out.println("總頁數"+tbItems.getTotalPages());
        //當前頁資料列表
        List<TbItem> content = tbItems.getContent();
        for (TbItem item : content) {
            System.out.println(item.getId()+" "+item.getTitle()+" "+item.getBrand()+" "+item.getSeller());
        }
    }


}