赞
踩
目前实现的功能有查询单个实体类,通过条件查询List,单个新增,批量新增,通过id删除,批量删除,
单个修改,
项目用到的类
pom.xml
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
- </dependency>
配置文件
- spring:
- data:
- elasticsearch:
- repositories:
- enabled: true
- cluster-name: my-es
- cluster-nodes: 42.194.130.93:9300
- environment: 开发环境
- ev:
- expressIndex: express_dev
ExpressIndexService类
- /**
- * 批量创建索引
- * @param expressList
- */
- void batchCreateIndex(List<ExpressDO> expressList);
-
- /**
- * 批量创建索引
- * @param express
- */
- void createIndex(ExpressDO express);
-
- /**
- * 批量删除索引
- */
- void deleteAllIndex();
-
- /**
- * 删除索引
- */
- void deleteIndex(Long id);
-
- /**
- * 修改索引
- * @param express
- */
- void updateIndex(ExpressDO express);
-
- /**
- * 查询索引
- * @param
- */
- ExpressDO seletctIndex(Long id);
-
- /**
- * 查询索引列表
- * @param
- */
- List<ExpressDO> seletctAllIndex(ExpressDO express, EsPager pager);
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
ExpressIndexServiceImpl类
- package com.bootdo.es.service.impl;
-
- import com.bootdo.es.domain.EsPager;
- import com.bootdo.es.domain.ExpressIndex;
- import com.bootdo.es.service.ExpressIndexRepository;
- import com.bootdo.es.service.ExpressIndexService;
- import com.bootdo.system.domain.ExpressDO;
-
- import com.bootdo.system.util.BeanUtils;
- import org.apache.commons.lang.StringUtils;
- import org.elasticsearch.index.query.BoolQueryBuilder;
- import org.elasticsearch.index.query.QueryBuilders;
- import org.elasticsearch.search.sort.SortBuilders;
- import org.elasticsearch.search.sort.SortOrder;
- 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.stereotype.Service;
-
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Optional;
-
- @Service
- public class ExpressIndexServiceImpl implements ExpressIndexService {
-
- @Autowired
- private ExpressIndexRepository expressIndexRepository;
-
- /**
- * 批量创建索引
- * @param expressList
- */
- @Override
- public void batchCreateIndex(List<ExpressDO> expressList) {
- List<ExpressIndex> expressAddIndexList = BeanUtils.cloneList(expressList, ExpressIndex.class);
- expressIndexRepository.saveAll(expressAddIndexList);
- }
-
- /**
- * 创建索引
- * @param express
- */
- @Override
- public void createIndex(ExpressDO express) {
- ExpressIndex expressIndex = BeanUtils.clone(express,ExpressIndex.class);
- expressIndexRepository.save(expressIndex);
- }
-
- /**
- * 批量删除索引
- * @param
- */
- @Override
- public void deleteAllIndex() {
- expressIndexRepository.deleteAll();
- }
-
- /**
- * 删除索引
- * @param
- */
- @Override
- public void deleteIndex(Long id) {
- expressIndexRepository.deleteById(id);
- }
-
- /**
- * 修改索引
- * @param
- */
- @Override
- public void updateIndex(ExpressDO express) {
- //删除索引
- expressIndexRepository.deleteById(Long.valueOf(express.getMealid()));
- //创建索引
- ExpressIndex expressIndex = BeanUtils.clone(express,ExpressIndex.class);
- expressIndexRepository.save(expressIndex);
- }
-
- /**
- * 查询索引列表
- * @param
- */
- @Override
- public List<ExpressDO> seletctAllIndex(ExpressDO express, EsPager pager) {
- // 构建查询条件
- NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
- BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
-
- if (StringUtils.isNotEmpty(express.getUsername())) {
- // 创建模糊查询语句 ES中must和should不能同时使用 同时使用should失效 嵌套多个must 将should条件拼接在一个must中即可
- BoolQueryBuilder shouldQuery = QueryBuilders.boolQuery()
- .should(QueryBuilders.wildcardQuery("username", "*"+express.getUsername()+"*"))
- .should(QueryBuilders.wildcardQuery("phone", "*"+express.getUsername()+"*"));
- boolQueryBuilder.must(shouldQuery);
- }
- queryBuilder.withSort(SortBuilders.fieldSort("createdate").order(SortOrder.ASC)); //排序
- if(null != express.getAddress()){
- boolQueryBuilder.must(QueryBuilders.termQuery("address", express.getAddress())); //条件查询
- }
- queryBuilder.withQuery(boolQueryBuilder);
-
- //页码设置
- int pagetSize = pager.getPageSize();
- queryBuilder.withPageable(PageRequest.of(pager.getPageNo() - 1,pagetSize));
- Page<ExpressIndex> pageList = expressIndexRepository.search(queryBuilder.build());
- List<ExpressDO> list = BeanUtils.cloneList(pageList.getContent(), ExpressDO.class) ;
- return list;
-
- }
-
- /**
- * 查询索引
- * @param
- */
- @Override
- public ExpressDO seletctIndex(Long id) {
- Optional<ExpressIndex> expressIndex = expressIndexRepository.findById(id);
- if(expressIndex != null){
- ExpressDO expressDO = BeanUtils.clone(expressIndex.get(),ExpressDO.class);
- return expressDO;
- }
- return new ExpressDO();
-
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
ExpressIndexRepository类
- package com.bootdo.es.service;
-
- import com.bootdo.es.domain.ExpressIndex;
- import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
-
-
- public interface ExpressIndexRepository extends ElasticsearchRepository<ExpressIndex,Long> {
- }
EV类
- package com.bootdo.es.domain;
-
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.stereotype.Component;
-
- @Component
- public class EV {
-
- @Value("${ev.expressIndex}")
- private String expressIndex;
-
- /* @Value("${ev.courseChapterIndex}")
- private String courseChapterIndex;
- @Value("${ev.courseItemIndex}")
- private String courseItemIndex;*/
-
- @Bean
- public String expressIndex(){
- return expressIndex;
- }
-
- /* @Bean
- public String courseChapterIndex(){
- return courseChapterIndex;
- }
- @Bean
- public String courseItemIndex(){
- return courseItemIndex;
- }*/
-
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
EsPager类
- package com.bootdo.es.domain;
-
-
- import java.io.Serializable;
-
- /**
- * 分页对象
- * @author dengzw
- * 2018-6-4 下午9:26:15
- *
- */
- public class EsPager extends Pager implements Serializable{
-
-
-
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
ExpressIndex类
- package com.bootdo.es.domain;
-
- 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;
-
- import java.io.Serializable;
- import java.math.BigDecimal;
- import java.util.Date;
-
- @Document(indexName = "#{@expressIndex}", type = "docs", shards = 1, replicas = 1)
- public class ExpressIndex implements Serializable {
-
- @Id
- private Integer mealid;
-
- //下单人姓名
- @Field(type = FieldType.Text, analyzer = "username")
- private String username;
-
- //下单人手机号
- @Field(type = FieldType.Text, analyzer = "phone")
- private String phone;
-
- //订单号
- @Field(type = FieldType.Text, analyzer = "orderno")
- private String orderno;
-
- //取件码
- @Field(type = FieldType.Text, analyzer = "pickcodce")
- private String pickcodce;
-
- //价格
- @Field(type = FieldType.Double, analyzer = "price")
- private BigDecimal price;
-
- //订单物品
- @Field(type = FieldType.Text, analyzer = "goods")
- private String goods;
-
- //收件人姓名
- @Field(type = FieldType.Text, analyzer = "collectname")
- private String collectname;
-
- //收件人手机号
- @Field(type = FieldType.Text, analyzer = "collectphone")
- private String collectphone;
-
- //始发地
- @Field(type = FieldType.Text, analyzer = "start")
- private String start;
-
- //目的地
- @Field(type = FieldType.Text, analyzer = "address")
- private String address;
-
- //订单状态 1待接单,2已接单,3已完成
- @Field(type = FieldType.Integer, analyzer = "status")
- private Integer status;
-
- //类型 1快递,2外卖,3跑腿
- @Field(type = FieldType.Integer, analyzer = "type")
- private Integer type;
-
- //快递类型 1代寄,2代取
- @Field(type = FieldType.Integer, analyzer = "expresstype")
- private Integer expresstype;
-
- //接单时间
- @Field(type = FieldType.Date, analyzer = "receivingdate")
- private Date receivingdate;
-
- //接单人
- @Field(type = FieldType.Long, analyzer = "receivinguserid")
- private Long receivinguserid;
-
- //修改时间
- @Field(type = FieldType.Date, analyzer = "updatedate")
- private Date updatedate;
-
- //创建时间
- @Field(type = FieldType.Date, analyzer = "createdate")
- private Date createdate;
-
- @Field(type = FieldType.Text, analyzer = "receivingName")
- private String receivingName;
-
- @Field(type = FieldType.Text, analyzer = "mobile")
- private String mobile;
-
- public Integer getMealid() {
- return mealid;
- }
-
- public void setMealid(Integer mealid) {
- this.mealid = mealid;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPhone() {
- return phone;
- }
-
- public void setPhone(String phone) {
- this.phone = phone;
- }
-
- public String getOrderno() {
- return orderno;
- }
-
- public void setOrderno(String orderno) {
- this.orderno = orderno;
- }
-
- public String getPickcodce() {
- return pickcodce;
- }
-
- public void setPickcodce(String pickcodce) {
- this.pickcodce = pickcodce;
- }
-
- public BigDecimal getPrice() {
- return price;
- }
-
- public void setPrice(BigDecimal price) {
- this.price = price;
- }
-
- public String getGoods() {
- return goods;
- }
-
- public void setGoods(String goods) {
- this.goods = goods;
- }
-
- public String getCollectname() {
- return collectname;
- }
-
- public void setCollectname(String collectname) {
- this.collectname = collectname;
- }
-
- public String getCollectphone() {
- return collectphone;
- }
-
- public void setCollectphone(String collectphone) {
- this.collectphone = collectphone;
- }
-
- public String getStart() {
- return start;
- }
-
- public void setStart(String start) {
- this.start = start;
- }
-
- public String getAddress() {
- return address;
- }
-
- public void setAddress(String address) {
- this.address = address;
- }
-
- public Integer getStatus() {
- return status;
- }
-
- public void setStatus(Integer status) {
- this.status = status;
- }
-
- public Integer getType() {
- return type;
- }
-
- public void setType(Integer type) {
- this.type = type;
- }
-
- public Integer getExpresstype() {
- return expresstype;
- }
-
- public void setExpresstype(Integer expresstype) {
- this.expresstype = expresstype;
- }
-
- public Date getReceivingdate() {
- return receivingdate;
- }
-
- public void setReceivingdate(Date receivingdate) {
- this.receivingdate = receivingdate;
- }
-
- public Long getReceivinguserid() {
- return receivinguserid;
- }
-
- public void setReceivinguserid(Long receivinguserid) {
- this.receivinguserid = receivinguserid;
- }
-
- public Date getUpdatedate() {
- return updatedate;
- }
-
- public void setUpdatedate(Date updatedate) {
- this.updatedate = updatedate;
- }
-
- public Date getCreatedate() {
- return createdate;
- }
-
- public void setCreatedate(Date createdate) {
- this.createdate = createdate;
- }
-
- public String getReceivingName() {
- return receivingName;
- }
-
- public void setReceivingName(String receivingName) {
- this.receivingName = receivingName;
- }
-
- public String getMobile() {
- return mobile;
- }
-
- public void setMobile(String mobile) {
- this.mobile = mobile;
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Pager类
- package com.bootdo.es.domain;
- import java.io.Serializable;
- import java.util.List;
-
- /**
- * @Description: 分页对象
- * @Author : zhuzq
- * @Date: 2020/8/7 15:21
- * @return:
- **/
- public class Pager<C> implements Serializable{
-
- private static final long serialVersionUID = 1L;
- private int pageSize = 10; // 每页多少条
- private int pageNo = 1; // 第几页
- private int totalPages = 10; // 总的页数
- private int totalSize = 0; // 总的记录数
- private List<?> list ;
-
- public Pager() {
- }
-
- public Pager(int pageNo, int pageSize) {
- super();
- this.pageSize = pageSize;
- this.pageNo = pageNo;
- }
-
- public int getBegin() {
- return (this.getPageNo() - 1) * this.getPageSize();
- }
-
- public int getEnd() {
- return (this.getPageNo() - 1) * this.getPageSize() + this.getPageSize();
- }
-
- public int getPageSize() {
- return pageSize;
- }
-
- public void setPageSize(int pageSize) {
- if (pageSize < 1) {
- this.pageSize = 10;
- } else {
- this.pageSize = pageSize;
- }
- }
-
- public int getPageNo() {
- if (this.pageNo > this.getTotalPages() && this.getTotalSize() > 0) {
- this.pageNo = this.getTotalPages(); // 如果当前页大于最大页数,则等于最大页数
- //this.pageNo = -1; //修改这里用户手机客户端.
- }
- return pageNo;
- }
-
-
- public void setPageNo(int pageNo) {
- if (pageNo < 1) {
- this.pageNo = 1;
- } else {
- this.pageNo = pageNo;
- }
- }
-
- public int getTotalPages() {
- totalPages = totalPages < 1 ? 1 : totalPages;
- totalPages = getTotalSize() % getPageSize() == 0 ? (getTotalSize() / getPageSize()) : (getTotalSize() / getPageSize() + 1);
- return totalPages;
- }
-
- public void setTotalPages(int totalPages) {
- this.totalPages = totalPages;
- }
-
- public int getTotalSize() {
- return totalSize;
- }
-
- public void setTotalSize(int totalSize) {
- this.totalSize = totalSize;
- }
-
- public List<?> getList() {
- return list;
- }
-
- public void setList(List<?> list) {
- this.list = list;
- }
-
- @Override
- public String toString() {
- return "Pager{" +
- "pageSize=" + pageSize +
- ", pageNo=" + pageNo +
- ", totalPages=" + totalPages +
- ", totalSize=" + totalSize +
- ", list=" + list +
- '}';
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
BeanUtils复制拷贝类
- package com.bootdo.system.util;
-
- import java.beans.BeanInfo;
- import java.beans.IntrospectionException;
- import java.beans.Introspector;
- import java.beans.PropertyDescriptor;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- import java.util.Set;
-
- import org.apache.commons.beanutils.BeanMap;
- import org.apache.commons.beanutils.PropertyUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.util.ClassUtils;
- import org.springframework.util.CollectionUtils;
-
- import com.alibaba.fastjson.JSONObject;
-
-
- /**
- * 摘要:Bean拷贝工具类
- * @author Williams.li
- * @version 1.0
- * @Date 2016年12月21日
- */
- public class BeanUtils extends org.apache.commons.beanutils.BeanUtils{
- private static final Logger logger = LoggerFactory.getLogger(BeanUtils.class);
-
- @SuppressWarnings("rawtypes")
- private static Map<Class, List<Field>> fieldsMap = new HashMap<Class, List<Field>>();
-
- /**
- * 拷贝list列表(排除Null)
- * @param sourceList 源列表
- * @param targetClass 目标class
- */
- public static <T> List<T> copyList(List<?> sourceList, Class<T> targetClass) {
- if(null == sourceList || sourceList.size() == 0){
- return null;
- }
- try{
- List<T> targetList = new ArrayList<T>(sourceList.size());
- for(Object source : sourceList){
- T target = targetClass.newInstance();
- BeanUtils.copyNotNull(target,source);
- targetList.add(target);
- }
- return targetList;
- }catch(Exception e){
- logger.error(e.getMessage(),e);
- return null;
- }
- }
-
- /**
- * 拷贝Object(排除Null)
- * @param target 目标
- * @param orig 源
- */
- public static <T> T copyNotNull(Class<T> targetClass, Object orig) {
- if( null == orig){
- return null;
- }
- try {
- T target = targetClass.newInstance();
- return copy(target, orig, false);
- }catch(Exception e){
- logger.error(e.getMessage(),e);
- return null;
- }
- }
-
- /**
- * 拷贝Object(排除Null)
- * @param target 目标
- * @param orig 源
- */
- public static <T> T copyNotNull(T target, Object orig) {
- if(null == target || null == orig){
- return null;
- }
- return copy(target, orig, false);
- }
-
-
-
- @SuppressWarnings("unchecked")
- public static <T> T copy(T target, Object orig, boolean includedNull, String... ignoreProperties) {
- if(null == target || null == orig){
- return null;
- }
- try {
- if (includedNull && ignoreProperties == null) {
- PropertyUtils.copyProperties(target, orig);
- } else {
- List<String> ignoreFields = new ArrayList<String>();
- if (ignoreProperties != null) {
- for (String p : ignoreProperties) {
- ignoreFields.add(p);
- }
- }
- if (!includedNull) {
- Map<String, Object> parameterMap = new BeanMap(orig);
- for (Entry<String, Object> entry : parameterMap.entrySet()) {
- if (entry.getValue() == null || "".equals(entry.getValue())) {
- String fieldName = entry.getKey();
- if (!ignoreFields.contains(fieldName)) {
- ignoreFields.add(fieldName);
- }
- }
- }
- }
- org.springframework.beans.BeanUtils.copyProperties(orig, target,
- ignoreFields.toArray(new String[ignoreFields.size()]));
- }
- return target;
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
- public static List<Field> getAllFields(Class<?> clazz) {
- if (!ClassUtils.isCglibProxyClass(clazz)) {
- List<Field> result = fieldsMap.get(clazz);
- if (result == null) {
- result = _getAllFields(clazz);
- fieldsMap.put(clazz, result);
- }
- return result;
- } else {
- return _getAllFields(clazz);
- }
- }
-
- private static List<Field> _getAllFields(Class<?> clazz) {
- List<Field> fieldList = new ArrayList<Field>();
- for (Field field : clazz.getDeclaredFields()) {
- fieldList.add(field);
- }
- Class<?> c = clazz.getSuperclass();
- if (c != null) {
- fieldList.addAll(getAllFields(c));
- }
- return fieldList;
- }
-
- /**
- * Get field in class and its super class
- *
- * @param clazz
- * @param fieldName
- * @return
- */
- public static Field getField(Class<?> clazz, String fieldName) {
- for (Field field : clazz.getDeclaredFields()) {
- if (field.getName().equals(fieldName)) {
- return field;
- }
- }
- Class<?> c = clazz.getSuperclass();
- if (c != null) {
- return getField(c, fieldName);
- }
- return null;
- }
-
- /**
- * 字符数组合并 注:接受多个数组参数的输入,合并成一个数组并返回。
- *
- * @param arr
- * 输入的数组参数,一个或若干个
- * @return
- */
- public static String[] getMergeArray(String[]... arr) {
- if (arr == null)
- return null;
- int length = 0;
- for (Object[] obj : arr) {
- length += obj.length;
- }
- String[] result = new String[length];
- length = 0;
- for (int i = 0; i < arr.length; i++) {
- System.arraycopy(arr[i], 0, result, length, arr[i].length);
- length += arr[i].length;
- }
- return result;
- }
-
- public static <T> T clone(Object obj, Class<T> targetClazz) {
- try {
- return copy(targetClazz.newInstance(), obj, false);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
-
-
- public static <M> List<M> cloneList(List<?> srcList, Class<M> targetClazz) {
- return ListUtil.clone(srcList, targetClazz);
- }
-
- @SuppressWarnings("unchecked")
- public static <T> List<T> createList(T... objs) {
- return ListUtil.createList(objs);
- }
-
- /**
- * 功能:将bean对象转换为url参数
- */
- public static String bean2urlparam(Object obj){
- try{
- StringBuilder builder = new StringBuilder();
- BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
- PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
- for (PropertyDescriptor property : propertyDescriptors) {
- String propKey = property.getName();
- if(!"class".equals(propKey)){
- Object propVal = PropertyUtils.getProperty(obj, propKey);
- if(propVal != null && StringUtil.isNotEmpty(propVal.toString())){
- builder.append(propKey).append("=").append(propVal).append("&");
- }
- }
- }
- if(builder.length() > 0){
- return builder.deleteCharAt(builder.length()-1).toString();
- }
- }catch(Exception e){
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
- /**
- * 功能:将url中的对应obj中的属性参数值替换
- */
- public static String bean2urlparam(Object obj,String param){
- try{
- BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
- PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
- String newStr = param;
- for (PropertyDescriptor property : propertyDescriptors) {
- String propKey = property.getName();
- if(!"class".equals(propKey)){
- Object propVal = PropertyUtils.getProperty(obj, propKey);
- if(propVal != null && StringUtil.isNotEmpty(propVal.toString())){
- newStr = newStr.replaceAll("="+propKey,"="+propVal.toString());
- continue;
- }
- }
- }
- return newStr;
- }catch(Exception e){
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
- /**
- * 功能:将url中的对应obj和map中的属性参数值替换
- */
- public static String bean2urlparam(Object obj,String param,Map<String,Object> plus){
- try{
- String newParam = bean2urlparam(obj,param);
- if(!CollectionUtils.isEmpty(plus)){
- for(Entry<String,Object> entry : plus.entrySet()){
- Object propVal = entry.getValue();
- if(propVal != null && StringUtil.isNotEmpty(propVal.toString())){
- newParam = newParam.replaceAll("="+entry.getKey(),"="+propVal.toString());
- }
- }
- }
- if(newParam.indexOf("#") != -1){
- newParam = newParam.replaceAll("#","");
- }
- return newParam;
- }catch(Exception e){
- logger.error(e.getMessage(), e);
- return null;
- }
- }
-
- /**
- * 功能:将URL参数转换为map
- */
- public static Map<String,String> urlparam2map(String param){
- if(StringUtils.isNotEmpty(param)){
- Map<String,String> map = null;
- String[] arr = StringUtils.split(param, "&");
- if(arr != null && arr.length > 0){
- map = new HashMap<String,String>();
- for(String item : arr){
- String[] eqArr = item.split("=");
- map.put(eqArr[0], eqArr[1]);
- }
- return map;
- }
- }
- return null;
- }
-
- /**
- * 功能:将URL参数转换为JSONObject
- */
- public static JSONObject urlparam2json(String param){
- JSONObject paramJSON = new JSONObject();
- if(StringUtils.isNotEmpty(param)){
- String[] arr = StringUtils.split(param, "&");
- if(arr != null && arr.length > 0){
- for(String item : arr){
- String[] eqArr = item.split("=");
- paramJSON.put(eqArr[0], eqArr[1]);
- }
- }
- }
- return paramJSON;
- }
-
- /**
- * 将一个 Map 对象转化为一个 JavaBean
- *
- * @param clazz
- * 要转化的类型
- * @param map
- * 包含属性值的 map
- * @return 转化出来的 JavaBean 对象
- * @throws IntrospectionException
- * 如果分析类属性失败
- * @throws IllegalAccessException
- * 如果实例化 JavaBean 失败
- * @throws InstantiationException
- * 如果实例化 JavaBean 失败
- * @throws InvocationTargetException
- * 如果调用属性的 setter 方法失败
- */
- @SuppressWarnings("rawtypes")
- public static <T> T toBean(Class<T> clazz, Map map) {
- T obj = null;
- try {
- BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
- obj = clazz.newInstance(); // 创建 JavaBean 对象
-
- // 给 JavaBean 对象的属性赋值
- PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
- for (int i = 0; i < propertyDescriptors.length; i++) {
- PropertyDescriptor descriptor = propertyDescriptors[i];
- String propertyName = descriptor.getName();
- if (map.containsKey(propertyName)) {
- // 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。
- Object value = map.get(propertyName);
- if ("".equals(value)) {
- value = null;
- }
- Object[] args = new Object[1];
- args[0] = value;
- try {
- descriptor.getWriteMethod().invoke(obj, args);
- } catch (InvocationTargetException e) {
- logger.info("字段映射失败");
- }
- }
- }
- } catch (IllegalAccessException e) {
- logger.info("实例化 JavaBean 失败");
- } catch (IntrospectionException e) {
- logger.info("分析类属性失败");
- } catch (IllegalArgumentException e) {
- logger.info("映射错误");
- } catch (InstantiationException e) {
- logger.info("实例化 JavaBean 失败");
- }
- return (T) obj;
- }
-
- /**
- * 将一个 JavaBean 对象转化为一个 Map
- *
- * @param bean
- * 要转化的JavaBean 对象
- * @return 转化出来的 Map 对象
- * @throws IntrospectionException
- * 如果分析类属性失败
- * @throws IllegalAccessException
- * 如果实例化 JavaBean 失败
- * @throws InvocationTargetException
- * 如果调用属性的 setter 方法失败
- */
- public static Map<String,Object> toMap(Object bean) {
- Class<? extends Object> clazz = bean.getClass();
- Map<String, Object> returnMap = new HashMap<String, Object>();
- BeanInfo beanInfo = null;
- try {
- beanInfo = Introspector.getBeanInfo(clazz);
- PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
- for (int i = 0; i < propertyDescriptors.length; i++) {
- PropertyDescriptor descriptor = propertyDescriptors[i];
- String propertyName = descriptor.getName();
- if (!propertyName.equals("class")) {
- Method readMethod = descriptor.getReadMethod();
- Object result = null;
- result = readMethod.invoke(bean, new Object[0]);
- if (null != propertyName) {
- propertyName = propertyName.toString();
- }
- if (null != result) {
- if(result instanceof Date){
- result = DateUtil.getDateFormat((Date)result);
- }else{
- result = result.toString();
- }
- }
- returnMap.put(propertyName, result);
- }
- }
- } catch (IntrospectionException e) {
- logger.info("分析类属性失败");
- } catch (IllegalAccessException e) {
- logger.info("实例化 JavaBean 失败");
- } catch (IllegalArgumentException e) {
- logger.info("映射错误");
- } catch (InvocationTargetException e) {
- logger.info("调用属性的 setter 方法失败");
- }
- return returnMap;
- }
-
-
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。