日常代码,以免忘记

日常代码,以免忘记

一:com.alibaba.fastjson的相关转换

一:利用 JSONObject 在 String 和实体类之间相互转换
实体类:User user = new User();
转String:String str = JSONObject.toJSONString(user);
转实体类:User user = JSONObject.parseObject(str,User.class);
使用场景:例如 一个对象的值 以String类型存入redis中,取出来以后,再把String类型的转换成对象

二:利用JSONArray把json格式的String转换为List<对象>

实体entity对象属性:
String code;
int number;
String格式的json:
String str = [{“code”:“red”,“number”:250},{“code”:“redTwo”,“number”:260}];
转换:
List list = JSONArray.parseArray(str, eneity.class);

三:List转JSON输出

System.out.println(JSONObject.toJSON(list));

System.out.println(JSON.toJSON(strBody));

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

//在idea里面格式化了,等同于 {"respCode": "0000","respMsg": "成功"}
String strBody = "{\"respCode\": \"0000\",\"respMsg\": \"成功\"}";
//可转成JSON数据,直接get某一个值
JSONObject jsonObject = JSONObject.parseObject(strBody);
//get值respCode,输出结果0000
String respCode = jsonObject.getString("respCode");

//输出不为空的json数据,空字段就不输出了(新增于20230906)
cn.hutool.json.JSONUtil.toJsonStr(dto);

四:List和Map之间数据转换

1:例如:库里面查询到的数据
List usList = userMapper.selectUser();
以userId为K,整个user对象为值,放入map
用集合的长度指定map的长度:CollectionUtils.seiz()
Map<Integer,User> usMap = new HashMap<>(CollectionUtils.seiz());
//循环放入
for(User us : usList){
usMap.put(us.getUserId, us);
}
//查询另一个用户助力表的数据。一个用户有多个人助力
List helpList = userHelpMapper.selectUserHelp();
for(UserHelp he : helpList ){
//根据助力表的userId(map的K)获取值
User userValue = usMap.get(he.getUserId);
userValue .setHelpCount(he.getHelpCount);
//查询到助力情况后,put进去,替换掉之前相同K里面的数据
usMap.put(he.getUserId, userValue);
}
//查询用户完成了哪些任务,这个方法通过switch语句可省去用SQL语句 横转竖 的麻烦。
//获取用户的任务完成情况
List taskList = userTaskMapper.selectUserTask();
for(UserTask taList : taskList ){
User userValue = usMap.get(taList.getUserId);
//任务码
String taskCode = taList.getTaskCode();
switch(taskCode){
case “任务码one”:
userValue.setTaskCodeOne(“任务完成”);
break;
case “任务码two”:
userValue.setTaskCodeTwo(“任务完成”);
break;
default:
break;
}
//任务组装以后,put进去,替换掉之前相同K里面的数据
usMap.put(he.getUserId, userValue);
}
//最后获取整个组装好的value值以后,返回一个list集合
List result = new ArrayList<>(usMap.values());
return result;
2:上面的List转Map 用流的方式
List usList = userMapper.selectUser();
//以userId为K,整个user对象为值,转map,
Map<Integer,User> usMap = usList.stream.collect(Collectors.toMap(User::getUserId,v ->v));
List转Map 当有两个相关联的表时,可以各查各的表,然后根据相关联的Id组装数据,见步骤1.
//用流得方式获取usList 里面所有得userId,转换成一个集合,批量查询相关联得数据库
Set idSet = usList.stream.map(User::getUserId).collect(Collectors.toSet);
//Mapper接口得写法
List selectUserTask(Set idSet);
//Mapper.xml写法 这个foreach标签是in(xxx,xxx,xx) 下面的是and的写法

  <select id="getAllId" resultType="om.group.evaluationlicense.entity.UserTask" parameterType="java.util.Set">
            select * from userTask
            where UserId in
            <foreach collection="collection" item="item" separator="," open="(" close=")">
                #{item}
            </foreach>
    </select>

//List写法(新增于20240417)
mapper层
在这里插入图片描述
xml层
在这里插入图片描述

//sql: and(cust_label_id like concat(‘%’,‘xxx’,‘%’) or cust_label_id like concat(‘%’,‘xxx’,‘%’) )
(新增于20230705)
在这里插入图片描述

五:lambda基本用法

public static void main(String[] args) {
        VerCode a = new VerCode("S", "a", 12);
        VerCode aa = new VerCode("S", "b", 13);
        VerCode bb = new VerCode("S", "c", 14);
        VerCode b = new VerCode("H", "d", 15);
        VerCode c = new VerCode("H", "e", 16);
        List<VerCode> entities = Arrays.asList(a, b, c, aa, bb);

        List<VerCode> list =
                entities.stream().filter(e -> e.getCode().equals("S") && e.getAge() == 12).
                        collect(Collectors.toList());
        System.out.println(list);
        System.out.println(JSONObject.toJSON(list));

        List<VerCode> codes = entities.stream().map(e -> {
            e.setAge(e.getAge() + 1);
            e.setCode(e.getCode().equals("S") ? "F" : "FF");
            return e;
        }).collect(Collectors.toList());
        System.out.println("codes == " + codes);

        List<String> str = Arrays.asList("abc", "def", "ghf");
        List<String> collect = str.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
        System.out.println(collect);
        System.out.println(JSONObject.toJSON(collect));
    }
//字段 String str = "1,5,7";转换成list
List<Long> idList = Arrays.stream("1,5,7".split(","))
						.map(Long::valueOf).collect(Collectors.toList());
						
// str = “a,b,c”;
List<String> list1 = Arrays.asList(str.split(","));

//list去重:
List<String> abWeicheMqTemplateIdList = templatenolist.stream().distinct().collect(Collectors.toList());

//倒叙取最大
    List<AbSignLogs> abSignLogsList = abSignLogsMapper.select(abSignLogs);
        return abSignLogsList.stream()
                .sorted(Comparator.comparing(AbSignLogs::getGmtCreated).reversed())
                .findFirst()
                .orElse(null);

查询一次表 list映射
在这里插入图片描述
先过滤,然后取时间最大的一条,赋值到另外一个对象里面(新增于20230717)
在这里插入图片描述

七:时间格式化

//Date类型的insureDate增加30天
   DateTime dateTime = DateUtil.offsetDay(insureDate, 30);
   //date转String 转换的日期格式为yyyy-MM-dd
   String date = DateUtil.format(dateTime, cn.hutool.core.date。DatePattern.NORM_DATE_PATTERN);

//或者用这个(新增于20231008)
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(cn.hutool.core.date。DatePattern.NORM_DATE_PATTERN);
    //输出格式为20231008
    String strdate = simpleDateFormat.format(new date);
    
   //string转date类型
   SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
   String str = "2021-10-25";
   Date parse = simpleDateFormat.parse(str);

//Long类型的时间戳转date
new Date(1633662511497L);

设置当天过期(新增于20230831)
在这里插入图片描述

八:简单的分批分页查询数据,几个关键词

//条数查询.
            Integer count = abCompanyBillRepo.countByExample(companyBillDTO);
            if (count == 0) {
                return ResultBaseUtils.transSuccess(Lists.newArrayList(), companyBillDTO.getCurrentPage(), companyBillDTO.getLimit(),
                        count);
            }
            //查询次数
            int queryNumber = count / 500 + 1;
            //查询起始数
            int startNumber = 0;
            //分批查询组装,最后一起导出,每次查询500条
            List<CompanyBillDTO> abCompanyBillPageRespVOList = Lists.newArrayList();
            for (int i = 0; i < queryNumber; i++) {
                log.info("总条数count:{},查询起始数startNumber:{},查询次数queryNumber:{}", count, startNumber, queryNumber);
                companyBillDTO.setCurrentPage(startNumber);
                companyBillDTO.setLimit(500);
                //获取账单明细数据.
                List<CompanyBillDTO> companyBillDTOList = abCompanyBillRepo.selectByPageExport(companyBillDTO);
                //页面新增扩展字段信息组装
                List<CompanyBillDTO> companyBillDTOS = this.addExtraColumn(companyBillDTOList);
                abCompanyBillPageRespVOList.addAll(companyBillDTOS);
                startNumber += 500;
            }

九:关于第四条的简单用法

public List<CompanyBillDTO> addExtraColumn(List<CompanyBillDTO> companyBillDTOList) {
        if (CollectionUtil.isEmpty(companyBillDTOList)) {
            return new ArrayList<>();
        }
        List<CompanyBillDTO> companyBillDTOS = new ArrayList<>();
        //获取渠道名称
        List<Long> companyIds = companyBillDTOList
                .stream()
                .map(CompanyBillDTO::getCompanyId)
                .collect(Collectors.toList());
        AbCompanyDTO abCompanyDTO = new AbCompanyDTO();
        abCompanyDTO.setCompanyIds(companyIds);
        Map<Long, AbCompanyDTO> abCompanyDTOS = abCompanyRepo.selectByPageExample(abCompanyDTO)
                .stream()
                .collect(Collectors.toMap(AbCompanyDTO::getId, company -> company));
        //获取支持人员
        List<Long> ownerMembers = companyBillDTOList
                .stream()
                .map(CompanyBillDTO::getOwnerMember)
                .collect(Collectors.toList());
        AbMemberDTO abMemberDTO = new AbMemberDTO();
        abMemberDTO.setOwnerMembers(ownerMembers);
        Map<Long, AbMemberDTO> abMemberDTOMap = abMemberRepo.selectByPageExample(abMemberDTO)
                .stream()
                .collect(Collectors.toMap(AbMemberDTO::getId, member -> member));
        //获取支持人员上级组织
        List<Long> ownerOrgs = companyBillDTOList
                .stream()
                .map(CompanyBillDTO::getOwnerOrg)
                .collect(Collectors.toList());
        AbOrgDTO abOrgDTO = new AbOrgDTO();
        abOrgDTO.setOwnerOrgs(ownerOrgs);
        Map<Long, AbOrgDTO> abOrgDTOMap = abOrgRepo.selectByPageExample(abOrgDTO)
                .stream()
                .collect(Collectors.toMap(AbOrgDTO::getId, orgDO -> orgDO));
        //获取保单号 这里先查个险。 后面再查寿险
        List<String> orderNos = companyBillDTOList
                .stream()
                .map(CompanyBillDTO::getOrderNo)
                .collect(Collectors.toList());
        AbPolicyDTO abPolicyDTO = new AbPolicyDTO();
        abPolicyDTO.setOrderNoList(orderNos);
        Map<String, AbPolicyDTO> policyDTOMap = abPolicyRepo.selectByPageExample(abPolicyDTO)
                .stream()
                .collect(Collectors.toMap(AbPolicyDTO::getOrderNo, abPolicyDO -> abPolicyDO));

        for (CompanyBillDTO companyBillDTO : companyBillDTOList) {
            //来源.
            if (StringUtils.isNotBlank(companyBillDTO.getSource())) {
                companyBillDTO.setSourceName(AbCompanyBillSourceEnum.getName(companyBillDTO.getSource()));
            }
            //保单号
            if (StringUtils.isNotBlank(companyBillDTO.getOrderNo())) {
                //个险信息
                AbPolicyDTO policyDTO = policyDTOMap.get(companyBillDTO.getOrderNo());
                if (null != policyDTO && StringUtils.isNotBlank(policyDTO.getPolicyNo())) {
                    companyBillDTO.setPolicyNo(policyDTO.getPolicyNo());
                } else {
                    //寿险信息  类型:income 1 收入 在保状态 查 寿险表,2支出 退保状态 查 保单批改表 ab_policy_endorsement
                    if ("1".equals(companyBillDTO.getIncome())) {
                        AbSxpoPolicyResp abSxpoPolicyResp = differentPolicyQuerySupport.querySxPolicyByOrderNo(companyBillDTO.getOrderNo());
                        if (null != abSxpoPolicyResp && StringUtils.isNotBlank(abSxpoPolicyResp.getPolicyNo())) {
                            companyBillDTO.setPolicyNo(abSxpoPolicyResp.getPolicyNo());
                        }
                    } else if ("2".equals(companyBillDTO.getIncome())) {
                        AbPolicyEndorsementDTO abPolicyEndorsementDTO = new AbPolicyEndorsementDTO();
                        abPolicyEndorsementDTO.setOrderNo(companyBillDTO.getOrderNo());
                        String policyNo = abPolicyEndorsementRepo.selectByPageExample(abPolicyEndorsementDTO)
                                .stream()
                                .findFirst()
                                .map(AbPolicyEndorsementDTO::getPolicyNo)
                                .orElse("");
                        companyBillDTO.setPolicyNo(policyNo);
                    }
                }
            }
            //支持人员
            if (null != companyBillDTO.getOwnerMember()) {
                AbMemberDTO memberDTO = abMemberDTOMap.get(companyBillDTO.getOwnerMember());
                if (null != memberDTO && StringUtils.isNotBlank(memberDTO.getMemberName())) {
                    companyBillDTO.setMemberName(memberDTO.getMemberName());
                }
            }
            //组织名称
            if (null != companyBillDTO.getOwnerOrg()) {
                AbOrgDTO orgDTO = abOrgDTOMap.get(companyBillDTO.getOwnerOrg());
                if (null != orgDTO && StringUtils.isNotBlank(orgDTO.getOrgName())) {
                    companyBillDTO.setOrgName(orgDTO.getOrgName());
                }
            }
            //渠道名称
            if (null != companyBillDTO.getCompanyId()) {
                AbCompanyDTO companyDTO = abCompanyDTOS.get(companyBillDTO.getCompanyId());
                if (null != companyDTO && StringUtils.isNotBlank(companyDTO.getCompanyName())) {
                    companyBillDTO.setCompanyName(companyDTO.getCompanyName());
                }
            }
            companyBillDTOS.add(companyBillDTO);
        }
        return companyBillDTOS;
    }

10:url占位符拼接

public static void main(String[] args) {
		           // https://m5-test2.zhonganib.com/py/signapplysms?orderNo=1&sign=2&openId=3
		String url = "https://m5-test2.zhonganib.com/py/signapplysms?orderNo=%s&sign=%s&openId=%s";
		String originUrl = String.format(url, "1","2","3");
		System.out.println(originUrl);
		//输出结果 https://m5-test2.zhonganib.com/py/signapplysms?orderNo=1&sign=2&openId=3
	}

11:List转String并加入其他分隔符


```java
List<AbProductPackageDefDTO> value = resultBase.getValue();

				List<Long> collect = resultBase.getValue()
						.stream()
						.map(AbProductPackageDefDTO::getId)
						.collect(Collectors.toList());
				String ids = "(" + StringUtils.join(collect, " OR ") + ")";
				System.out.println(ids);
				//输出的结果为
(1715 OR 1782 OR 1784 OR 1788 OR 1611 OR 1796 OR 1599 OR 1665)

//手机号带***
  String str = "15048621771";
        String replaceAll = str.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
        //输出结果 150****1771
        System.out.println(replaceAll);
//String转list
String str ="a,b,c";
List<String> split= Arrays.asList(str.split(","));

//策略模式map的定义
@Service
public class IssueManageService {

    @Autowired
    Map<String, IssueStrategyService> IssueMap = new ConcurrentHashMap<>();

    public IssueStrategyService getIssueImpl(String key) {
        IssueStrategyService healthPeriodWithholdService = IssueMap.get(key);
        if (healthPeriodWithholdService == null) {
            throw new RuntimeException("策略没有定义");
        }
        return healthPeriodWithholdService;
    }
}



## 关于lambda的其他用法
https://www.cnblogs.com/JasonKong/p/11188704.html

http://www.zimug.com/java/%e6%81%95%e6%88%91%e7%9b%b4%e8%a8%80%e4%bd%a0%e5%8f%af%e8%83%bd%e7%9c%9f%e7%9a%84%e4%b8%8d%e4%bc%9ajava%e7%ac%ac6%e7%af%87%ef%bc%9astream%e6%80%a7%e8%83%bd%e5%b7%ae%ef%bc%9f%e4%b8%8d%e8%a6%81%e4%ba%ba/.html













  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值