个人日常开发工具、问题收集

本文涵盖SpringBoot事务回滚、MyBatis关联查询、文件与字符串互转、JSON解析、达梦数据库操作、ElementUI组件定制等实用技术点,旨在提升开发效率与代码质量。

一、SpringBoot try…catch回滚事务

  1. 方法上添加注解

    @Transactional
    
  2. 标记回滚开始节点

    Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
    
  3. 启动回滚

    TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
    

二、MyBatis查询关联

  1. mybatis一对多(ofType:关联表,column:外键)

    <resultMap id="resultMap" type="com.wade.www.entity.Entity1">
      <result property="id" column="id"/>
        <result property="name" column="name"/>
        <collection
           	property="entity2List"
             column="{entity2Id=id}"
             ofType="com.wade.www.entity.Entity2"
             javaType="ArrayList"
             select="com.wade.www.mapper.Entity2Mapper.queryById">
        </collection>
    </resultMap>
    

三、文件与String的相互转换

  1. 文件转String

    private String fileToString(String pathStr) {
            File file = new File(pathStr);
            try {
                FileInputStream fis = new FileInputStream(file);
                ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
                byte[] b = new byte[1000];
                int n;
                while ((n = fis.read(b)) != -1) {
                    bos.write(b, 0, n);
                }
                fis.close();
                byte[] data = bos.toByteArray();
                bos.close();
                return Base64.getEncoder().encodeToString(data);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
  2. String转文件

     public static void StringToFile(String base64file, String filePath, String fileName) throws Exception {
            byte[] bytes = Base64.getDecoder().decode(base64file);
            BufferedOutputStream bos = null;
            FileOutputStream fos = null;
            File file;
            try {
                File dir = new File(filePath);
                if (!dir.exists() && !dir.isDirectory()) {// 判断文件目录是否存在
                    dir.mkdirs();
                }
                file = new File(filePath + "\\" + fileName);
                fos = new FileOutputStream(file);
                bos = new BufferedOutputStream(fos);
                bos.write(bytes);
            } catch (Exception e) {
                throw new Exception("文件传输失败!");
            } finally {
                if (bos != null) {
                    try {
                        bos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    

四、String转map,排序问题处理

 HashMap<String, Object> jsonMap = JSON.parseObject(str, 
 new TypeReference<HashMap<String, Object>>() {}, Feature.OrderedField);

五、时间字段问题(格式化、保存)

  1. 实体转json时间格式化失效:@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
    // 添加此注解即可
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    
  2. 字段传入为空时数据库不更新
    // 添加此注解即可
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    

五、达梦数据

  1. windows版本导入导出
    导出
    dexp USERID=账号/"""密码"""@服务器:5236 FILE=center0724.dmp DIRECTORY=G:\111-AAA\DM\backup SCHEMAS=数据库名
    
    导入
    dimp USERID=账号/"""密码"""@服务器:5236 FILE=center0724.dmp DIRECTORY=G:\111-AAA\center0724 SCHEMAS=数据库名
    

六、ElementUI中Cascader级联选择器实现点击文本选中

  1. 利用Cascader的属性:popper-class(自定义浮层类名),增加CSS解决问题。

     <el-cascader
        v-model="editForm.channel"
        :options="channelList"
        :props="{ multiple: true, checkStrictly: true, emitPath: false, value: 'id', label: 'channel_name' }"
        clearable
        style="width: 100%;"
        popper-class="popper"  // 这个是重点
     >
    </el-cascader>
    
  2. 增加对应的CSS

    /*
    级联
     */
    .popper .el-cascader-panel .el-radio {
        width: 100%;
        height: 100%;
        z-index: 10;
        position: absolute;
        top: 0px;
        right: 0px;
    }
    .popper .el-cascader-panel .el-checkbox {
        width: 100%;
        height: 100%;
        z-index: 10;
        position: absolute;
        top: 0px;
        right: 0px;
    }
    .popper .el-cascader-panel .el-radio__input {
        margin-top: 10px;
        margin-left: 8px;
    }
    .popper .el-cascader-panel .el-checkbox__input {
        margin-top: 2px;
        margin-left: 8px;
    }
    .popper .el-cascader-panel .el-cascader-node__postfix {
        top: 10px;
    }
    

七、windows,docker配置Docker Engine

		 "registry-mirrors": [
			    "https://docker.1panelproxy.com",
			    "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
			    "https://docker.m.daocloud.io",
			    "https://hub-mirror.c.163.com",
			    "https://mirror.baidubce.com",
			    "https://your_preferred_mirror",
			    "https://dockerhub.icu",
			    "https://docker.registry.cyou",
			    "https://docker-cf.registry.cyou",
			    "https://dockercf.jsdelivr.fyi",
			    "https://docker.jsdelivr.fyi",
			    "https://dockertest.jsdelivr.fyi",
			    "https://mirror.aliyuncs.com",
			    "https://dockerproxy.com",
			    "https://mirror.baidubce.com",
			    "https://docker.m.daocloud.io",
			    "https://docker.nju.edu.cn",
			    "https://docker.mirrors.sjtug.sjtu.edu.cn",
			    "https://docker.mirrors.ustc.edu.cn",
			    "https://mirror.iscas.ac.cn",
			    "https://docker.rainbond.cc"
			  ]
		```



TODO..
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值