电商项目day10-1(Spring-data-Solr入门demo)

本文介绍如何使用Spring Data Solr将商品数据导入Solr索引库,并演示了商品数据的增删改查、分页及条件查询操作。

一.重新创建一个项目用于导入数据库的数据到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());
        }
    }


}

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的小巍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值