上接:springboot 使用 Spring Data Elasticsearch 操作 Elasticsearch 7.9-创建工程
文档操作
service类
package day1.service;
import day1.dao.ToutiaoDao;
import day1.entity.Toutiao;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class ESToutiaoDocSrvImpl {
@Resource
private ToutiaoDao toutiaoDao;
@Resource
private ElasticsearchRestTemplate template;
/**
* 新增
*/
public void save(Toutiao toutiao){
// 方法一
//toutiaoDao.save(toutiao);
// 方法二
template.save(toutiao);
}
/**
* 修改和新增是同一个接口,但是,要传入 id
*/
public void update(Toutiao toutiao){
save(toutiao);
}
//根据 id 查询
public Toutiao findById(String id){
// 方法一
//Toutiao toutiao = toutiaoDao.findById(id).get();
// 方法二
Toutiao toutiao=template.get(id,Toutiao.class);
return toutiao;
}
//删除
public void delete(String id){
// 方法一
// Toutiao toutiao = new Toutiao();
// toutiao.setId(id);
// toutiaoDao.delete(toutiao);
// 方法二
//toutiaoDao.deleteById(id);
// 方法三
template.delete(id, Toutiao.class);// 返回id
}
//批量新增
public void saveAll(List<Toutiao> list){
// 方法一
//toutiaoDao.saveAll(list);
// 方法二
template.save(list);
}
/**
* 分页查询
* @param currentPage 当前页,第一页从 0 开始,1 表示第二页
* @param pageSize 每页显示多少条
* @return
*/
public Page<Toutiao> findPage(int currentPage, int pageSize){
//设置排序(排序方式,正序还是倒序,排序的 id)
Sort sort = Sort.by(Sort.Direction.DESC,"date");
//设置查询分页
PageRequest pageRequest = PageRequest.of(currentPage, pageSize,sort);
//分页查询
Page<Toutiao> page = toutiaoDao.findAll(pageRequest);
return page;
}
/**
* 查询所有数据
* 注意:由于数据较多,可能引发崩溃,使用较少
* @return
*/
public Iterable<Toutiao> findAll(){
Iterable<Toutiao> it = toutiaoDao.findAll();
return it;
}
}
springboot 测试类
package test;
import day1.Main;
import day1.entity.Toutiao;
import day1.service.ESToutiaoDocSrvImpl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.test.context.junit4.SpringRunner;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Main.class)
public class TestESToutiaoDocSrvImpl {
@Autowired
private ESToutiaoDocSrvImpl service;
/**
* 新增
*/
@Test
public void save(){
Toutiao toutiao = new Toutiao();
toutiao.setId("123");
toutiao.setTitle("华为手机");
toutiao.setContent("华为手机就是好");
toutiao.setType("手机");
toutiao.setAuthor("路人甲");
toutiao.setLike(50);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String date=sdf.format(new Date());
toutiao.setDate(date);
service.save(toutiao);
System.out.println("保存成功!");
}
//修改和新增是同一个接口,区分的依据就是 id
@Test
public void update(){
Toutiao toutiao = new Toutiao();
toutiao.setId("123");
toutiao.setTitle("华为手机 mate 100");
toutiao.setContent("华为手机好,very good");
toutiao.setAuthor("路人甲");
toutiao.setLike(50);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String date=sdf.format(new Date());
toutiao.setDate(date);
service.update(toutiao);
}
//根据 id 查询
@Test
public void findById(){
Toutiao toutiao = service.findById("123");
System.out.println(toutiao);
}
@Test
public void findAll(){
Iterable<Toutiao> it = service.findAll();
for (Toutiao item : it) {
System.out.println(item);
}
}
//删除
@Test
public void delete(){
service.delete("123");
}
//批量新增
@Test
public void saveAll(){
List<Toutiao> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Toutiao product = new Toutiao();
product.setTitle("["+i+"]小米手机");
list.add(product);
System.out.println(product);
}
service.saveAll(list);
}
//分页查询
@Test
public void findByPageable(){
//分页查询
// Page<Toutiao> page = service.findPage(0, 5);
Page<Toutiao> page = service.findPage(1, 5);
for (Toutiao item : page.getContent()) {
System.out.println(item);
}
}
}