Java集合生成insert脚本部分核心代码

平时记录一些自己工作日常中用到的工具,可以方便下次快速复用。

下面方法涉及对象转换map,对象集合转insert脚本集合,获取到该集合后直接写入到指定文件就行了


import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;   
 

     public static <T> List<String> getInsertSql(List<T> list, String table) {
        if (!CollectionUtils.isEmpty(list)) {
            List<String> results = new ArrayList<>();
            for (T t : list) {
                try {
                    Map<String, Object> map = beanToMap(t);
                    StringBuffer head = new StringBuffer("INSERT INTO `" + table + "` ( ");
                    StringBuffer end = new StringBuffer(" ) VALUES ( ");
                    for (String key : map.keySet()) {
                        head.append(" `" + key + "`,");
                        Object val = map.get(key);
                        if (val == null) {
                            end.append(" null , ");
                        } else {
                            if (val instanceof BigDecimal) {
                                BigDecimal b = new BigDecimal(val.toString());
                                if (b != null) {
                                    b = b.setScale(2, BigDecimal.ROUND_HALF_DOWN);
                                } else {
                                    b = BigDecimal.ZERO;
                                }
                                end.append(" '" + b.floatValue() + "', ");
                            } else if (val instanceof Date) {
                                Date b = (Date) val;
                                end.append(" '" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(b) + "', ");
                            } else {
                                end.append(" '" + val.toString() + "', ");
                            }
                        }
                    }
                    String result = head.toString();
                    result = result.substring(0, result.length() - 1);
                    String ttt = end.toString();
                    result = result + ttt.substring(0, ttt.length() - 2) + " ); ";
                    results.add(result);
                } catch (IllegalAccessException e) {
                    throw new RuntimeException(e);
                }
            }
            return results;
        }
        return null;
    }

    public static Map<String, Object> beanToMap(Object object) throws IllegalAccessException {
        Map<String, Object> map = new HashMap<String, Object>();
        Field[] fields = object.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            map.put(field.getName(), field.get(object));
        }
        return map;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值