【Solr】SpringData-solrTemplate的增删改查操作

 只是为了演示操作,就不做MVC分层了。

Controller

package com.sjky.platform.fxwx.controller.wx;

import com.sjky.platform.common.base.web.BaseController;
import com.sjky.platform.fxwx.dao.member.FxMemberMapper;
import com.sjky.platform.fxwx.dto.FxMemberDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;
import org.springframework.data.solr.core.SolrTemplate;
import org.springframework.data.solr.core.query.Criteria;
import org.springframework.data.solr.core.query.Query;
import org.springframework.data.solr.core.query.SimpleQuery;
import org.springframework.data.solr.core.query.result.ScoredPage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;
import java.util.Optional;

@Controller
public class TestSolrMember extends BaseController {

    @Autowired
    private SolrTemplate solrTemplate;

    @Autowired
    private FxMemberMapper fxMemberMapper;

    @RequestMapping("/addMember.do")
    public void addMember() {
        /*根据主键进行判断是新增/修改一条数据*/
        FxMemberDto member = fxMemberMapper.selectByCode("007c8d98825143c0bc022b675e373501");
        solrTemplate.saveBean("member",member);
        /*增加List集合*/
        List<FxMemberDto> memberList = fxMemberMapper.getReconmmendProxyByCode("007c8d98825143c0bc022b675e373501");
        solrTemplate.saveBeans("member",memberList);
        /*提交*/
        solrTemplate.commit("member");
    }

    @RequestMapping("/getMember.do")
    public void getMember() {
        /*根据ID进行查询*/
        Optional<FxMemberDto> member = solrTemplate.getById("member", "19005",FxMemberDto.class);
        //“*:*”所有数据
        Query query = new SimpleQuery("*:*");
        //起始位置,默认0
        query.setOffset((long) 0);
        //每页条数 默认10
        query.setRows(15);
        //精确查询
        Criteria criteria = new Criteria("fms_proxy_name").is("付小萍");
        //criteria.add()相当于sql里的AND; criteria.or()相当于sql里的or
        // is:等于;contains:包含
        criteria = criteria.or("fms_proxy_name").contains("爱宝照片书");
        query.addCriteria(criteria);
        /*排序*/
        Sort id = new Sort(Sort.Direction.DESC, "id");
        query.addSort(id);
        //以下两种查询并无实际区别
        Page<FxMemberDto> fx_member1 = solrTemplate.query("member", query, FxMemberDto.class  );
        ScoredPage<FxMemberDto> memberPage = solrTemplate.queryForPage("member", query, FxMemberDto.class);
        //总条数
        long totalElements = memberPage.getTotalElements();
        //数据集合
        List<FxMemberDto> memberList = memberPage.getContent();
    }
    @RequestMapping("/deleteMember.do")
    public void deleteMember() {
        //“*:*”所有数据
        Query query = new SimpleQuery();
        Criteria criteria = new Criteria("fms_proxy_name").is("super璐");
        query.addCriteria(criteria);
        //根据ID删除数据
        solrTemplate.deleteByIds("member","19005");
        //删除query条件内的数据
        solrTemplate.delete("member",query);
        solrTemplate.commit("member");
    }
}

因为实体类涉及时间类型,所以新建一个DTO

注:@Field注解内容一定要与data-config.xml中配置要对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值