solr搜索结果转实体类对象的两种方法
Posted xiaostudy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solr搜索结果转实体类对象的两种方法相关的知识,希望对你有一定的参考价值。
问题:就是把从solr搜索出来的结果转成我们想要的实体类对象,很常用的情景。
1、使用@Field注解
@Field这个注解放到实体类的属性【字段】中,例如下面
1 public class User 2 /** 3 * id 4 */ 5 @Field 6 private String id; 7 /** 8 * 用户名 9 */ 10 @Field 11 private String userName; 12 /** 13 * 密码 14 */ 15 @Field 16 private String password; 17
关于获取SolrClient可以参考
springboot和solr结合测试使用
使用转换
SolrQuery query = new SolrQuery(); query.setQuery("id:1");// 查询内容,id为1 QueryResponse response = solrClient.query(query); List<User> beans = response.getBeans(User.class);
2、使用反射
1 SolrQuery query = new SolrQuery(); 2 query.setQuery("id:1");// 查询内容,id为1 3 QueryResponse response = solrClient.query(query); 4 // 查询结果集 5 SolrDocumentList results = response.getResults(); 6 List<User> list = new ArrayList(); 7 for(SolrDocument record : records) 8 User obj = null; 9 try 10 obj = User.class.newInstance(); 11 catch (InstantiationException e1) 12 e1.printStackTrace(); 13 catch (IllegalAccessException e1) 14 e1.printStackTrace(); 15 16 Field[] fields = User.class.getDeclaredFields(); 17 for(Field field:fields) 18 Object value = record.get(field.getName()); 19 if(null == value) 20 continue; 21 22 try 23 BeanUtils.setProperty(obj, field.getName(), value); 24 catch (IllegalAccessException e) 25 e.printStackTrace(); 26 catch (InvocationTargetException e) 27 e.printStackTrace(); 28 29 30 if(null != obj) 31 list.add(obj); 32 33
以上是关于solr搜索结果转实体类对象的两种方法的主要内容,如果未能解决你的问题,请参考以下文章
MyBatis注解开发的两种方法@Results和resultMap