栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于Java项目代码的个人理解,JDK8的新特性

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Java项目代码的个人理解,JDK8的新特性

文章目录
  • 1、@Builder创建对象
  • 2、遍历List合并结果集
  • 3、 .forEach(item->{}); 合并结果集
  • 4、Java enum
  • 5、获取与当前用户同一组的用户信息
  • 6、将json转成数组
  • 7、获取当前项目路径
  • 8、已知图片url,将图片转为base64再以map形式传输

Dao层为数据连接层,一般一个Dao层与一张表相对应
Dto层为数据传输层,一般一个Dao对应一个Dto或多个Dto,原因是前端不需要传输全部字段,所以新建一个Dto层,其实可以用Map代替

1、@Builder创建对象
Dao.builder().属性("属性值").属性("属性值").build()
2、遍历List合并结果集

在主Dto中添加副Dto的List

public class SklMechanismDto implements Serializable {
    List personnels;
}
3、 .forEach(item->{}); 合并结果集
sklMechanisms.forEach(info->{
       List sklPersonnels = sklPersonnelMapper.selectPersonnelByMechanismId(info.getId());
       info.setPersonnels(sklPersonnels);
            });

list.stream().map(Dto::new).collect(Collectors.toList());

public List getPubDictionary(ParameterMap param) {
        String category = MapUtils.getString(param, "category");
        List sklDictionaries = dictionaryMapper.selectAllList(SklDictionary.builder()
                .category(category).build()
        );
        return sklDictionaries.stream().map(SklDictionaryDto::new).collect(Collectors.toList());
    }
4、Java enum

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

例如定义一个颜色的枚举类。

enum Color 
{ 
    RED, GREEN, BLUE; 
} 
5、获取与当前用户同一组的用户信息
String username = ServletUtil.getCurrentUser();
SysUserRole sysUserRole = userRoleMapper.selectByUsername(username);
SysUser sysUser = userMapper.selectUserByUsername(username);
List sysUsers = userMapper.selectListByGrpno(sysUser.getGrpno());
List usernames = sysUsers.stream().map(SysUser::getUsername).collect(Collectors.toList());
6、将json转成数组
private void doJsonParse(SklConcludeProjects entity) {
        //将json 转成数组
        if((entity.getProjectActors()==null || entity.getProjectActors().size()==0)
                && !StringUtils.isEmpty(entity.getProjectActorsJson()) ) {
            List o = JsonUtil.toObject(entity.getProjectActorsJson(), new TypeReference>() {});
            entity.setProjectActors(o);
        }
        //将json 转成数组同时把上传的文件与期对应起来
        if((entity.getStageResults()==null || entity.getStageResults().size()==0)
                && !StringUtils.isEmpty(entity.getStageResultsJson()) ) {
            List o = JsonUtil.toObject(entity.getStageResultsJson(), new TypeReference>() {});
            if (entity.getStageAttachFiles() != null && entity.getStageAttachFiles().size() > 0) {
                o.forEach(p->{
                    if (StringUtils.hasText(entity.getStageResultsJson()) && !StringUtils.isEmpty(p.getAttachName())) {
                        for (MultipartFile stageAttachFile : entity.getStageAttachFiles()) {
                            if (stageAttachFile.getOriginalFilename() == null) {
                                continue;
                            }
                            if (stageAttachFile.getOriginalFilename().contains(p.getAttachName())) {
                                p.setStageAttachFile(stageAttachFile);
                                break;
                            }
                        }
                    }
                });
            }
            entity.setStageResults(o);
        }
    }
7、获取当前项目路径
//自定义文件目录,在配置文件中application-dev
params: 
	#文章附件绝对地址
 	articlesFilePath: /articles/local/

        
        
@Value("${params.articlesFilePath}")
private String articlesFilePath;

//文件路径			
String filePath = articlesFilePath+now.get(Calendar.YEAR)+"_"+(now.get(Calendar.MONTH) + 1)+"/";
File rootPath = new File("");
String path = rootPath.getCanonicalPath() + filePath;
8、已知图片url,将图片转为base64再以map形式传输
try {
    //如果图片url为空则返回null
    if (sklArticle.getTitleImg() == null){
        map.put("image",null);
        return map;
    }
    //从数据库中拿出url
    String imagePath = sklArticle.getTitleImg();
    FileInputStream fis = new FileInputStream(imagePath);
    //新建流
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    int count = 0;
    byte[] buffer = new byte[1024 * 8];
    //用字符流复制图片,循环读取,每次读取1024*8个字节
    //虽然是每次循环读取1024*8个字节,但实际上还是一个一个字节读取的,当读取完后会返回一个-1,结束循环
    while ((count = fis.read(buffer)) != -1) {
        os.write(buffer, 0, count);
        //刷新该缓冲流,即,将使用的Wrtier流写入到本地文件中,而不是存于内存中,清除buffer内容
        os.flush();
    }
    //从流中获取数据数组
    byte b[] = os.toByteArray();
    base64 base64 = new base64();
    //将字节数组转为base64形式并加入map
    map.put("image",base64.encodeToString(b));
    fis.close();
    os.close();
    return map;
} catch (Exception e) {
    e.printStackTrace();
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/275220.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号