从这里是主程序:
package com.zhousp.csvutil.util;
import org.junit.jupiter.api.Test;
import org.springframework.util.DigestUtils;
import java.util.*;
class StrTransTestTest {
StrTransTest strTransTest = new StrTransTest();
@Test
void object2str() {
//UserA 和 UserB 的不同之处是toString方法一个是Data生成的,一个是自定义的.
UserA userA = new UserA();
userA.setAddress("中国上海");
userA.setUserId(1234L);
userA.setCreateTime(new Date());
userA.setIntroduceSign("我是java爱好者!");
userA.setLoginName("道生一");
userA.setNickName("老九");
String md5Str = DigestUtils.md5DigestAsHex("ZSP800101".getBytes());
userA.setPasswordMd5(md5Str);
UserB userB = new UserB();
BeanUtil.copyProperties(userA, userB);
String stra = strTransTest.object2str(userA);
//结果是: UserA [Hash = 64133603, userId=1234, nickName=老九, loginName=道生一, passwordMd5=e14f409e9cdc9be4323de04fdf7cf182, introduceSign=我是java爱好者!, address=中国上海, isDeleted=null, lockedFlag=null, createTime=Sun Sep 19 16:56:52 CST 2021]
String strb = strTransTest.object2str(userB);
//结果是: UserB(userId=1234, nickName=老九, loginName=道生一, passwordMd5=e14f409e9cdc9be4323de04fdf7cf182, introduceSign=我是java爱好者!, address=中国上海, isDeleted=null, lockedFlag=null, createTime=Sun Sep 19 16:56:52 CST 2021)
//将userB字符串转换成Map<String,String>
StrUtil strUtil =new StrUtil();
Map<String,String> mapa = strUtil.splitterT(stra);
Map<String,String> mapb = strUtil.splitterT(strb);
//结果是:
//将Map<String,String>转换成Json字符串
String jsonstra = strUtil.map2Json(mapa);
//结果是: {"UserA [Hash ":" 64133603"," userId":"1234"," nickName":"老九"," loginName":"道生一"," passwordMd5":"e14f409e9cdc9be4323de04fdf7cf182"," introduceSign":"我是java爱好者!"," address":"中国上海"," isDeleted":"null"," lockedFlag":"null"," createTime":"Sun Sep 19 17:08:10 CST 2021]"}
String jsonstrb = strUtil.map2Json(mapb);
//结果是: {"UserB(userId":"1234"," nickName":"老九"," loginName":"道生一"," passwordMd5":"e14f409e9cdc9be4323de04fdf7cf182"," introduceSign":"我是java爱好者!"," address":"中国上海"," isDeleted":"null"," lockedFlag":"null"," createTime":"Sun Sep 19 17:03:58 CST 2021)"}
int start = strb.indexOf("(");
int end = strb.indexOf(")");
String substr = strb.substring(start+1,end);
//结果是: userId=1234, nickName=老九, loginName=道生一, passwordMd5=e14f409e9cdc9be4323de04fdf7cf182, introduceSign=我是java爱好者!, address=中国上海, isDeleted=null, lockedFlag=null, createTime=Sun Sep 19 17:53:45 CST 2021
Map<String,String> mapbb = strUtil.splitterT(substr);
//结果是:
//遍历Map,把经过处理的字符串写入List
JSonStrUnit jSonStrUnit = new JSonStrUnit();
Map<String ,String> newMap = new HashMap<>();
Iterator<Map.Entry<String, String>> it = mapbb.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
jSonStrUnit.setKey(entry.getKey());
String tempstr = "'" + entry.getValue() + "'"; //与数据库写入有关
jSonStrUnit.setValue(tempstr);
//把经过处理后的字符串写入Map
newMap.put(entry.getKey(), tempstr);
}
String nmstr = newMap.toString();
//结果是: { passwordMd5='e14f409e9cdc9be4323de04fdf7cf182', loginName='道生一', isDeleted='null', address='中国上海', nickName='老九', createTime='Sun Sep 19 17:53:45 CST 2021', userId='1234', introduceSign='我是java爱好者!', lockedFlag='null'}
String jsonstraa = strUtil.map2Json(mapbb);
//结果是: {"userId":"1234"," nickName":"老九"," loginName":"道生一"," passwordMd5":"e14f409e9cdc9be4323de04fdf7cf182"," introduceSign":"我是java爱好者!"," address":"中国上海"," isDeleted":"null"," lockedFlag":"null"," createTime":"Sun Sep 19 17:53:45 CST 2021"}
//组合sql inset table set指令
int s = nmstr.indexOf("{");
int e = nmstr.indexOf("}");
String sub_str = nmstr.substring(s+1, e);
//以下是MySQL插入指令
String sqlstr = "insert into tb_person_info set " + sub_str +";";
//结果是: insert into tb_person_info set passwordMd5='e14f409e9cdc9be4323de04fdf7cf182', loginName='道生一', isDeleted='null', address='中国上海', nickName='老九', createTime='Sun Sep 19 18:12:40 CST 2021', userId='1234', introduceSign='我是java爱好者!', lockedFlag='null';
}
}
下面这些是工具类和必要的条件:: package com.zhousp.csvutil.util; import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; public class UserA { private Long userId; private String nickName; private String loginName; private String passwordMd5; private String introduceSign; private String address; private Byte isDeleted; private Byte lockedFlag; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName == null ? null : nickName.trim(); } public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName == null ? null : loginName.trim(); } public String getPasswordMd5() { return passwordMd5; } public void setPasswordMd5(String passwordMd5) { this.passwordMd5 = passwordMd5 == null ? null : passwordMd5.trim(); } public String getIntroduceSign() { return introduceSign; } public void setIntroduceSign(String introduceSign) { this.introduceSign = introduceSign == null ? null : introduceSign.trim(); } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Byte getIsDeleted() { return isDeleted; } public void setIsDeleted(Byte isDeleted) { this.isDeleted = isDeleted; } public Byte getLockedFlag() { return lockedFlag; } public void setLockedFlag(Byte lockedFlag) { this.lockedFlag = lockedFlag; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(getClass().getSimpleName()); sb.append(" ["); sb.append("Hash = ").append(hashCode()); sb.append(", userId=").append(userId); sb.append(", nickName=").append(nickName); sb.append(", loginName=").append(loginName); sb.append(", passwordMd5=").append(passwordMd5); sb.append(", introduceSign=").append(introduceSign); sb.append(", address=").append(address); sb.append(", isDeleted=").append(isDeleted); sb.append(", lockedFlag=").append(lockedFlag); sb.append(", createTime=").append(createTime); sb.append("]"); return sb.toString(); } }
package com.zhousp.csvutil.util; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @Data public class UserB { private Long userId; private String nickName; private String loginName; private String passwordMd5; private String introduceSign; private String address; private Byte isDeleted; private Byte lockedFlag; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; }
package com.zhousp.csvutil.util; import com.alibaba.fastjson.JSON; import com.google.common.base.Splitter; import java.util.Map; public class StrUtil { //将形如: "id=123,name=zhousp,mobile=13818923478" 这样的字符串,解析成 Map<String, String> public Map<String, String> splitterT(String sequence) { Map<String, String> map = Splitter.on(",").withKeyValueSeparator('=').split(sequence); return map; } //将Map<String, String> 转换成 Json格式的字符串 "{"key1":"value","key2":"value"}" public String map2Json(Map<String, String> map){ //将Map转换成JSON字符串 return JSON.toJSONString(map); } }
package com.zhousp.csvutil.util; import lombok.Data; @Data public class JSonStrUnit { private String key; private String value; }
package com.zhousp.csvutil.util; import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.PropertyAccessorFactory; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.util.*; public abstract class BeanUtil { public static Object copyProperties(Object source, Object target, String... ignoreProperties) { if (source == null) { return target; } BeanUtils.copyProperties(source, target, ignoreProperties); return target; } }