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();
}
}
该博客展示了如何使用MongoDB的bulkOps方法进行无序批量操作,以及通过MogoUtil工具类将JavaBean转换为MongoDB的Update对象进行更新操作。内容包括创建Test对象列表,遍历并更新每个对象,最后执行批量操作。此外,还提供了一个CamelUnderlineUtil工具类用于Java驼峰命名到下划线命名的转换。

9690

被折叠的 条评论
为什么被折叠?



