第一、ElasticSearch 基礎操作之增刪改查
1.1 pom.xml 添加相關ElasticSearch jar包依賴。
<!-- elasticseacher 依賴jar 包 -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.3.2</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.3.2</version>
</dependency>
1.2 ElasticSearch 通用工具類封裝:
package com.zzg.elasticsearch;
import java.net.InetAddress;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
/**
* elasticSearch 工具類
*
* @author Administrator
*
*/
public class ElasticSearchUtil {
public Settings getSettings(String clusterName) {
return Settings.builder().put("cluster.name", clusterName).build();
}
public TransportClient getTransportClient(Settings settings, String ip, Integer port) {
TransportClient client = null;
try {
client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName(ip), port));
} catch (Exception e) {
e.printStackTrace();
}
return client;
}
public void close(TransportClient client) {
client.close();
}
// 功能代碼片段
public void createIndex(TransportClient client, String indexName) {
client.admin().indices().prepareCreate(indexName).get();
}
}
1.3 創建Index
測試核心功能代碼:
// TODO Auto-generated method stub
ElasticSearchUtil util = new ElasticSearchUtil();
Settings settings = util.getSettings("my-application");
TransportClient client = util.getTransportClient(settings, "localhost", 9300);
util.createIndex(client, "blog1");
util.close(client);
elasticSearch head 管理平臺截圖:
1.4 創建映射Mapping
注意:ElasticSearchUtil 補全創建Mapping 方法。
public void createMapping(TransportClient client, String indexName, String type, XContentBuilder builder) {
// 創建映射
try {
PutMappingRequest mapping = Requests.putMappingRequest(indexName) .type(type).source(builder);
client.admin().indices().putMapping(mapping).get();
}catch(Exception e) {
e.printStackTrace();
}
}
核心功能代碼:
/**
* 創建mapping 映射
*
* @param args
*/
public static void main(String[] args) {
ElasticSearchUtil util = new ElasticSearchUtil();
Settings settings = util.getSettings("my-application");
TransportClient client = util.getTransportClient(settings, "localhost", 9300);
XContentBuilder builder = getMapping();
util.createMapping(client, "blog1", "article", builder);
util.close(client);
}
public static XContentBuilder getMapping() {
XContentBuilder builder = null;
try {
builder = XContentFactory.jsonBuilder().startObject().startObject("article").startObject("properties")
.startObject("id").field("type", "integer").field("store", true).endObject().startObject("title")
.field("type", "text").field("store", true).field("analyzer", "ik_smart").endObject()
.startObject("content").field("type", "text").field("store", true).field("analyzer", "ik_smart")
.endObject().endObject().endObject().endObject();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return builder;
}
elasticSearch head 管理平臺截圖:
1.5 創建document
注意:ElasticSearchUtil 補全創建Document方法。
public void createDocument(TransportClient client, String indexName, String type, String id, XContentBuilder source) {
client.prepareIndex(indexName, type, id).setSource(source).get();
}
核心功能代碼:
/**
* 創建document 文檔對象
* @param args
*/
public static void main(String[] args) {
ElasticSearchUtil util = new ElasticSearchUtil();
Settings settings = util.getSettings("my-application");
TransportClient client = util.getTransportClient(settings, "localhost", 9300);
XContentBuilder source = getMapping();
util.createDocument(client, "blog1", "article", "1", source);
util.close(client);
}
public static XContentBuilder getMapping() {
XContentBuilder builder = null;
try {
builder = XContentFactory.jsonBuilder() .startObject() .field("id", 1) .field("title", "ElasticSearch是一個基於Lucene的搜索服務器")
.field("content", "它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用 Java開發的,並作爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,能夠達到 實時搜索,穩定,可靠,快速,安裝使用方便。")
.endObject(); // 建立文檔對象
}catch(Exception e) {
e.printStackTrace();
}
return builder;
}
elasticSearch head 管理平臺截圖:
1.6 查詢document
1.6.1 關鍵字查詢
核心功能代碼:
package com.zzg.elasticsearch;
import java.util.Iterator;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
public class ElasticSearchQuery {
private ElasticSearchUtil util;
public ElasticSearchUtil getUtil() {
return util;
}
public void setUtil(ElasticSearchUtil util) {
this.util = util;
}
public ElasticSearchQuery(ElasticSearchUtil util) {
super();
this.util = util;
}
/**
* 關鍵字查詢
*/
public void termQuery(String indexName, String type, String field, String value) {
Settings settings = util.getSettings("my-application");
TransportClient client = util.getTransportClient(settings, "localhost", 9300);
//2、設置搜索條件
SearchResponse searchResponse = client.prepareSearch(indexName) .setTypes(type) .setQuery(QueryBuilders.termQuery(field, value)).get();
//3、遍歷搜索結果數據
SearchHits hits = searchResponse.getHits();
// 獲取命中次數,查詢結果有多少對象
System.out.println("查詢結果有:" + hits.getTotalHits() + "條");
Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit searchHit = iterator.next();
// 每個查詢對象
System.out.println(searchHit.getSourceAsString());
// 獲取字符串格式打印
System.out.println("title:" + searchHit.getSourceAsMap().get("title"));
}
}
}
測試核心功能代碼:
public static void main(String[] args) {
ElasticSearchUtil util = new ElasticSearchUtil();
ElasticSearchQuery query = new ElasticSearchQuery(util);
query.termQuery("blog1", "article", "content", "搜索");
}
效果截圖:
1.6.2 字符串查詢
注意:ElasticSearchQuery 工具類補全字符串查詢方法
/**
* 字符串查詢
* @param indexName
* @param type
* @param field
* @param value
*/
public void stringQuery(String indexName, String type, String value) {
Settings settings = util.getSettings("my-application");
TransportClient client = util.getTransportClient(settings, "localhost", 9300);
//2、設置搜索條件
SearchResponse searchResponse = client.prepareSearch(indexName) .setTypes(type) .setQuery(QueryBuilders.queryStringQuery(value)).get();
//3、遍歷搜索結果數據
SearchHits hits = searchResponse.getHits();
// 獲取命中次數,查詢結果有多少對象
System.out.println("查詢結果有:" + hits.getTotalHits() + "條");
Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit searchHit = iterator.next();
// 每個查詢對象
System.out.println(searchHit.getSourceAsString());
// 獲取字符串格式打印
System.out.println("title:" + searchHit.getSourceAsMap().get("title"));
}
}
測試核心功能代碼:
public static void main(String[] args) {
ElasticSearchUtil util = new ElasticSearchUtil();
ElasticSearchQuery query = new ElasticSearchQuery(util);
query.stringQuery("blog1", "article", "搜索");
}
效果截圖:
1.6.3 文檔ID查詢
注意:ElasticSearchQuery 工具類補全ID查詢方法
/**
* id 查詢
* @param indexName
* @param type
* @param value
*/
public void idQuery(String indexName, String type, String id) {
Settings settings = util.getSettings("my-application");
TransportClient client = util.getTransportClient(settings, "localhost", 9300);
//2、設置搜索條件
SearchResponse searchResponse = client.prepareSearch(indexName) .setTypes(type) .setQuery(QueryBuilders.idsQuery().addIds(id)).get();
//3、遍歷搜索結果數據
SearchHits hits = searchResponse.getHits();
// 獲取命中次數,查詢結果有多少對象
System.out.println("查詢結果有:" + hits.getTotalHits() + "條");
Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit searchHit = iterator.next();
// 每個查詢對象
System.out.println(searchHit.getSourceAsString());
// 獲取字符串格式打印
System.out.println("title:" + searchHit.getSourceAsMap().get("title"));
}
}
測試核心功能代碼:
public static void main(String[] args) {
ElasticSearchUtil util = new ElasticSearchUtil();
ElasticSearchQuery query = new ElasticSearchQuery(util);
query.idQuery("blog1", "article", "1");
}
效果截圖:
1.7 查詢分頁document
1.7.1 批量新增文檔
核心功能代碼:
package com.zzg.elasticsearch;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentType;
import com.alibaba.fastjson.JSONObject;
public class ElasticSearchBatch {
private ElasticSearchUtil util;
public ElasticSearchUtil getUtil() {
return util;
}
public void setUtil(ElasticSearchUtil util) {
this.util = util;
}
public ElasticSearchBatch(ElasticSearchUtil util) {
super();
this.util = util;
}
/**
* elasticSearch 批量插入
*/
public void batchInsert(String indexName, String type) {
Settings settings = util.getSettings("my-application");
TransportClient client = util.getTransportClient(settings, "localhost", 9300);
for (int i = 2; i <= 100; i++) {
// 描述json 數據
Article article = new Article();
article.setId(i);
article.setTitle(i + "搜索工作其實很快樂");
article.setContent(i
+ "我們希望我們的搜索解決方案要快,我們希望有一個零配置和一個完全免費的搜索模式,我 們希望能夠簡單地使用JSON通過HTTP的索引數據,我們希望我們的搜索服務器始終可用,我們希望能夠一臺開始並擴展 到數百,我們要實時搜索,我們要簡單的多租戶,我們希望建立一個雲的解決方案。Elasticsearch旨在解決所有這些 問題和更多的問題。");
// 建立文檔
client.prepareIndex(indexName, type, article.getId().toString())
.setSource(JSONObject.toJSONString(article), XContentType.JSON).get();
}
}
/**
* 定義數據內部類
* @author Administrator
*
*/
class Article{
private Integer id;
private String title;
private String content;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
}
測試核心功能代碼:
public static void main(String[] args) {
ElasticSearchUtil util = new ElasticSearchUtil();
ElasticSearchBatch batch = new ElasticSearchBatch(util);
batch.batchInsert("blog1", "article");
}
效果截圖:
1.7.2 關鍵字分頁查詢
注意:ElasticSearchQuery 工具類補全關鍵字分頁查詢功能
/**
* 關鍵字分頁查詢
*/
public void termQueryPage(String indexName, String type, String field, String value, int from, int size) {
Settings settings = util.getSettings("my-application");
TransportClient client = util.getTransportClient(settings, "localhost", 9300);
//2、設置搜索條件
SearchResponse searchResponse = client.prepareSearch(indexName) .setTypes(type) .setQuery(QueryBuilders.termQuery(field, value))
.setFrom(from)
.setSize(size)
.get();
//3、遍歷搜索結果數據
SearchHits hits = searchResponse.getHits();
// 獲取命中次數,查詢結果有多少對象
System.out.println("查詢結果有:" + hits.getTotalHits() + "條");
Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit searchHit = iterator.next();
// 每個查詢對象
System.out.println(searchHit.getSourceAsString());
// 獲取字符串格式打印
System.out.println("title:" + searchHit.getSourceAsMap().get("title"));
}
}
測試核心功能代碼:
public static void main(String[] args) {
ElasticSearchUtil util = new ElasticSearchUtil();
ElasticSearchQuery query = new ElasticSearchQuery(util);
query.termQueryPage("blog1", "article", "content", "搜索", 0, 10);
}
效果截圖:
字符串、ID查詢實現分頁,在查詢條件上補全分頁方法: .setFrom(from) .setSize(size)
1.8 高亮查詢
1.8.1 什麼是高亮顯示
在進行關鍵字搜索時,搜索出的內容中的關鍵字會顯示不同的顏色,稱之爲高亮。
1.8.2 高亮顯示功能實現
注意:ElasticSearchQuery 工具類補全關鍵字分頁高亮查詢功能
/**
* 關鍵字查詢之高亮顯示
* @param indexName
* @param type
* @param field
* @param value
* @param from
* @param size
*/
public void termQueryHighlight(String indexName, String type, String field, String value, int from, int size) {
Settings settings = util.getSettings("my-application");
TransportClient client = util.getTransportClient(settings, "localhost", 9300);
//設置高亮數據
HighlightBuilder hiBuilder=new HighlightBuilder();
hiBuilder.preTags("<font style='color:red'>");
hiBuilder.postTags("</font>");
hiBuilder.field("title");
//2、設置搜索條件
SearchResponse searchResponse = client.prepareSearch(indexName) .setTypes(type) .setQuery(QueryBuilders.termQuery(field, value))
.highlighter(hiBuilder)
.get();
//3、遍歷搜索結果數據
SearchHits hits = searchResponse.getHits();
// 獲取命中次數,查詢結果有多少對象
System.out.println("查詢結果有:" + hits.getTotalHits() + "條");
Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit searchHit = iterator.next();
System.out.println("String方式打印文檔搜索內容:");
System.out.println(searchHit.getSourceAsString());
System.out.println("Map方式打印高亮內容");
System.out.println(searchHit.getHighlightFields());
System.out.println("遍歷高亮集合,打印高亮片段:");
if(searchHit.getHighlightFields() != null) {
if(searchHit.getHighlightFields().get("title") != null) {
Text[] text = searchHit.getHighlightFields().get("title").getFragments();
for (Text str : text) {
System.out.println(str);
}
}
}
}
}
public static void main(String[] args) {
ElasticSearchUtil util = new ElasticSearchUtil();
ElasticSearchQuery query = new ElasticSearchQuery(util);
query.termQueryHighlight("blog1", "article", "content", "搜索", 0, 10);
}
第二、Spring Data ElasticSearch 基礎操作之增刪改查
2.1 SpringData ElasticSearch 簡介
2.1.1 什麼是SpringData
2.1.2 什麼是SpringData ElasticSearch
Spring Data ElasticSearch 基於 spring data API 簡化 elasticSearch操作,將原始操作elasticSearch的客戶端API 進行封裝 。Spring Data爲Elasticsearch項目提供集成搜索引擎。Spring Data Elasticsearch POJO的關鍵功能區域 爲中心的模型與Elastichsearch交互文檔和輕鬆地編寫一個存儲庫數據訪問層。
官方網站:http://projects.spring.io/spring-data-elasticsearch/
2.1.3 SpringBoot 集成SpringData ElasticSearch
項目結構截圖:
elasticsearch-demo 之pom.xml 添加相關jar 包依賴:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.zzg</groupId>
<artifactId>elasticSearch-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>elasticsearch-demo</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<elasticsearch.version>6.3.2</elasticsearch.version>
<spring.data.elasticsearch.version>3.1.0.RELEASE</spring.data.elasticsearch.version>
</properties>
<dependencies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>${spring.data.elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
</dependencies>
</project>
程序入口:
package com.zzg;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// TODO Auto-generated method stub
return builder.sources(Application.class);
}
}
實體對象:
package com.zzg.entity;
import java.io.Serializable;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Document(indexName = "blog3", type = "article")
public class Article implements Serializable {
/**
*
*/
private static final long serialVersionUID = 5941564233618076170L;
// @Id 文檔主鍵 唯一標識
@Id
// @Field 每個文檔的字段配置(類型、是否分詞、是否存儲、分詞器 )
@Field(store = true, index = false, type = FieldType.Integer)
private Integer id;
@Field(index = true, analyzer = "ik_smart", store = true, searchAnalyzer = "ik_smart", type = FieldType.Text)
private String title;
@Field(index = true, analyzer = "ik_smart", store = true, searchAnalyzer = "ik_smart", type = FieldType.Text)
private String content;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "Article [id=" + id + ", title=" + title + ", content=" + content + "]";
}
}
ElasticSearch Repository接口定義:
package com.zzg.repository;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
import com.zzg.entity.Article;
@Repository
public interface ArticleRepository extends ElasticsearchRepository<Article, Integer> {
}
實體對象服務定義及其實現類:
package com.zzg.service;
import java.util.List;
import org.springframework.data.domain.Page;
import com.zzg.entity.Article;
public interface ArticleService {
long count();
Article save(Article article);
void delete(Article article);
Iterable<Article> getAll();
List<Article> getByName(String name);
Page<Article> pageQuery(Integer pageNo, Integer pageSize, String kw);
}
package com.zzg.service.impl;
import java.util.ArrayList;
import java.util.List;
import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.stereotype.Service;
import com.zzg.entity.Article;
import com.zzg.repository.ArticleRepository;
import com.zzg.service.ArticleService;
@Service
public class ArticleServiceImpl implements ArticleService {
@Autowired
private ArticleRepository repository;
public long count() {
// TODO Auto-generated method stub
return repository.count();
}
public Article save(Article article) {
// TODO Auto-generated method stub
return repository.save(article);
}
public void delete(Article article) {
// TODO Auto-generated method stub
repository.delete(article);
}
public Iterable<Article> getAll() {
// TODO Auto-generated method stub
return repository.findAll();
}
public List<Article> getByName(String name) {
// TODO Auto-generated method stub
List<Article> list = new ArrayList<Article>();
MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("content", name);
Iterable<Article> iterable = repository.search(matchQueryBuilder);
iterable.forEach(item ->{
list.add(item);
});
return list;
}
public Page<Article> pageQuery(Integer pageNo, Integer pageSize, String kw) {
// TODO Auto-generated method stub
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(QueryBuilders.matchPhraseQuery("content", kw)).withPageable(PageRequest.of(pageNo, pageSize)).build();
return repository.search(searchQuery);
}
}
application.properties 配置文件定義:
spring.data.elasticsearch.cluster-name=my-application
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
ElasticSearch Test功能代碼:
package com.zzg.test;
import java.util.List;
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.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.test.context.junit4.SpringRunner;
import com.zzg.entity.Article;
import com.zzg.service.ArticleService;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ElasticSearchTest {
@Autowired
private ArticleService commodityService;
@Test
public void contextLoads() {
System.out.println(commodityService.count());
}
/** 測試保存文檔 */
@Test
public void saveArticle() {
Article article = new Article();
article.setId(100);
article.setTitle("測試SpringData ElasticSearch");
article.setContent(
"Spring Data ElasticSearch 基於 spring data API 簡化 elasticSearch操 作,將原始操作elasticSearch的客戶端API 進行封裝 \n"
+ " Spring Data爲Elasticsearch Elasticsearch項目提供集成搜索引擎");
commodityService.save(article);
}
/** 測試保存 */
@Test
public void save() {
Article article = new Article();
article.setId(1001);
article.setTitle("elasticSearch 3.0版本發佈");
article.setContent("ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的 全文搜索引擎,基於RESTful web接口");
commodityService.save(article);
}
/** 測試更新 */
@Test
public void update() {
Article article = new Article();
article.setId(1001);
article.setTitle("elasticSearch 3.0版本發佈...更新");
article.setContent("ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的 全文搜索引擎,基於RESTful web接口");
commodityService.save(article);
}
/** 測試刪除 */
@Test
public void delete() {
Article article = new Article();
article.setId(1001);
commodityService.delete(article);
}
/** 批量插入 */
@Test
public void save100() {
for (int i = 1; i <= 99; i++) {
Article article = new Article();
article.setId(i);
article.setTitle(i + "elasticSearch 3.0版本發佈..,更新");
article.setContent(i + "ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用 戶能力的全文搜索引擎,基於RESTful web接口");
commodityService.save(article);
}
}
/** 查詢全部 */
@Test
public void findAll() {
Iterable<Article> page = commodityService.getAll();
page.forEach(item -> {
System.out.println("content is:" + item.getContent());
});
}
/**
* 條件查詢
*/
@Test
public void findByName() {
List<Article> list = commodityService.getByName("搜索");
list.forEach(item -> {
System.out.println("content is:" + item.getContent());
});
}
/**
* 條件查詢
*/
@Test
public void findPage() {
Page<Article> page = commodityService.pageQuery(0, 10, "搜索");
System.out.println(page.getTotalPages());
System.out.println(page.getNumber());
System.out.println(page.getContent());
}
}