只是为了演示操作,就不做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中配置要对应。