spring-data-solr 入门配置
2016-12-28 16:06
405 查看
spring-data-solr 入门配置
spring4+spring-data-solr2.6.x 整合代码
pom.xml
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-solr</artifactId> <version>2.0.6.RELEASE</version> </dependency> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-core</artifactId> <version>6.3.0</version> </dependency>
application-solr.xml
<solr:repositories base-package="com.*"/> <bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate"> <constructor-arg index="0" ref="solrClientFactory"/> </bean> <bean id="solrClientFactory" class="org.springframework.data.solr.server.support.HttpSolrClientFactoryBean"> <property name="url" value="http://localhost:8983/solr/jcg"/> <property name="timeout" value="15000"/> <property name="maxConnections" value="100"/> </bean> <bean id="simpleSolrRepository" class="org.springframework.data.solr.repository.support.SimpleSolrRepository"> <property name="solrOperations" ref="solrTemplate"></property> </bean>
Book.java
package com.solr; import org.apache.solr.client.solrj.beans.Field; import org.springframework.data.solr.core.mapping.SolrDocument; @SolrDocument public class Book implements java.io.Serializable{ private static final long serialVersionUID = 8066442791230445208L; @Field private String id; @Field private String cat ; @Field private String name ; @Field private String price ; @Field private String inStock ; @Field private String author ; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getCat() { return cat; } public void setCat(String cat) { this.cat = cat; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } public String getInStock() { return inStock; } public void setInStock(String inStock) { this.inStock = inStock; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } @Override public String toString() { return this.getName() + " \t\t " + this.getAuthor(); } }
BookTest.java Junit Test
package com.xintian.weixin; import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.stream.IntStream; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; import org.springframework.data.domain.Sort.Order; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringRunner; import com.solr.Book; import com.solr.BookRepositoryImpl; @RunWith(SpringRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") public class BookTest extends AbstractJUnit4SpringContextTests { @Autowired private BookRepositoryImpl bookRepository; @Test public void addBook() { List<Book> bks = new ArrayList<>(); IntStream.range(1, 50).forEach( n->{ Book bk = new Book(); bk.setId(UUID.randomUUID().toString().replace("-", "")); bk.setName("穷爸爸富爸爸 "+n); bk.setAuthor("李佳朋"); bk.setPrice(""+n); bk.setInStock("true"); bk.setCat("成功学"); bks.add(bk); }); bookRepository.save(bks); // Predicate predicate = new Predicate(key, value); // bookRepository.getSolrOperations().execute(new SolrCallback<Object>() { // @Override // public Object doInSolr(SolrClient solrClient) throws SolrServerException, IOException { // solrClient.query(params); // return null; // } // // }); } @Test public void deleteBook() { bookRepository.delete(bookRepository.findAll()); } @Test public void update() { Iterable<Book> allBook = bookRepository.findAll(); List<Book> udBook =new ArrayList<Book>(); allBook.forEach(b -> { b.setCat("小说集"); udBook.add(b); }); bookRepository.save(udBook); } @Test public void getBookOrderBy() { List<Order> orders = new ArrayList<>(); orders.add(new Sort.Order(Direction.DESC, "price")); Sort sort = new Sort(orders); bookRepository.findAll(sort).forEach(b -> { System.out.println(b); });; } @Test public void getPageBook() { Sort sort = new Sort(Direction.DESC, "price"); bookRepository.findAll(sort).forEach(b -> { System.out.println(b); });; System.out.println("\r\n"); Pageable pageable = new PageRequest(2,10,sort); bookRepository.findAll(pageable).forEach(b -> { System.out.println(b); });; } @Test public void findOne() { Book o = bookRepository.findOne("ca2c6b74acb74654a9e08e4d984808ac"); System.out.println(o); } @Test public void queryBook() { //// List<Book> list = bookRepository.queryBookByName(""); // Query query = new SimpleQuery(); // Criteria criteria = new Criteria("name"); // criteria.contains("爸爸"); // query.addCriteria(criteria); // Object o =bookRepository.getSolrOperations().queryForObject(query, Book.class); // System.out.println(o); } }
BookRepository.java
package com.solr; import java.util.List; public interface BookRepository { public List<Book> findByAvailable(Boolean available); }
BookRepositoryImpl.java
package com.solr; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.solr.core.SolrTemplate; import org.springframework.data.solr.repository.Query; import org.springframework.data.solr.repository.support.SimpleSolrRepository; import org.springframework.stereotype.Repository; @Repository public class BookRepositoryImpl extends SimpleSolrRepository<Book, String> implements BookRepository { @Autowired private SolrTemplate solrTemplate; @Autowired public void setSolrOperations(){ super.setSolrOperations(solrTemplate); } @Query("inStock:?false") public List<Book> queryBookByName(String string) { return null; } @Override public List<Book> findByAvailable(Boolean available) { return null; } }
没有实现类也是可以查询的
package com.solr; import java.util.List; import org.springframework.data.repository.Repository; /** * 没有实现类也是可以查询的 * 去看看 TestBookNoImpl.test() * */ public interface BookInterfaceRepository extends Repository<Book, String> { List<Book> findByName(String name); }
TestBookNoImpl.java
package com.xintian.weixin; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringRunner; import com.solr.Book; import com.solr.BookInterfaceRepository; @RunWith(SpringRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") public class TestBookNoImpl extends AbstractJUnit4SpringContextTests { @Autowired private BookInterfaceRepository productRepository; @Test public void test(){ List<Book> books = productRepository.findByName("爸爸"); System.out.println(books.size()); books.forEach( book -> { System.out.println(book); }); } }
查询是按方法名称命名
http://note.youdao.com/noteshare?id=82069fd1ce143285ae17ae2fd5f0e09c
继续研究中jiaplee@qq.com
相关文章推荐
- solr快速入门的地址,spring-data/solr
- spring data solr 之多核配置
- SpringDataSolr --- 入门简介
- Solr 4.3.0 配置Data import handler时出错
- solr 数据库配置文件 db-data-config.xml 和配置过滤html代码
- 配置运行Spring 入门级Demo 和常见故障解决 (Spring in Action)
- solr入门与配置
- Spring 数据访问对象(Data Access Object,DAO)框架入门(转)
- Spring Data Solr教程(翻译)
- solr dataimport 的配置
- Solr3.4 dataimport 配置实践笔记
- Solr Data Import配置多Entity
- Myeclipse开发struts+hibernate+spring新手入门---环境配置
- spring入门(3)--spring加载配置web
- spring入门(14)ssh中事务处理spring配置文件
- solr基础配置(入门一)
- struts2+hibernate3.2+spring2.0配置+入门实例
- Spring 数据访问对象(Data Access Object,DAO)框架入门(翻译)
- Solr 3.5 入门配置应用
- Spring基本配置——入门2