批量更新或添加到Mogodb

该博客展示了如何使用MongoDB的bulkOps方法进行无序批量操作,以及通过MogoUtil工具类将JavaBean转换为MongoDB的Update对象进行更新操作。内容包括创建Test对象列表,遍历并更新每个对象,最后执行批量操作。此外,还提供了一个CamelUnderlineUtil工具类用于Java驼峰命名到下划线命名的转换。
摘要由CSDN通过智能技术生成
public static void main(String[] args){
   BulkOperations operations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, "test_info");   
  List<Test> list = new ArrayList<>();
  Test n1 = new Test();
  n1.setId("111");
  n1.setCaseName("test1");
  Test n2 = new Test();
  n2.setId("222");
  n2.setCaseName("test2");
  list.add(n1);
  list.add(n2);
  for(Test m:list){
    Update update = MogoUtil.getUpdateByBean(m);
    operations.upsert(query,update);
 }
  operations.execute();
}
/**
 * @chenw
 * 将javabean转mogodb Update值
 */
public class MogoUtil {
    public static <T> Update getUpdateByBean(T n){
        Class clazz = n.getClass();
        Field[] fields = clazz.getDeclaredFields();
        Update update = new Update();
        try {
            for(Field f:fields){
                f.setAccessible(true);
                String key = CamelUnderlineUtil.camelToUnderline(f.getName());
                update.set(key,f.get(n));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return update;
    }

}

 

 

/**javabean转波浪**/

public class CamelUnderlineUtil {
    private static final char UNDERLINE ='_';
    public static String camelToUnderline(String param) {
        if (StringUtils.isBlank(param)) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        int len = param.length();
        for (int i = 0; i < len; i++) {
            char c = param.charAt(i);
            if (Character.isUpperCase(c)) {
                sb.append(UNDERLINE);
                sb.append(Character.toLowerCase(c));
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }

    public static String underlineToCamel(String param){
        if (StringUtils.isBlank(param)) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        int len = param.length();
        for (int i = 0; i < len; i++) {
            char c = param.charAt(i);
            if (c==UNDERLINE) {
                if(++i<len){
                    sb.append(Character.toUpperCase(param.charAt(i)));
                }
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值