1.Java逻辑层抛出异常如果用到回滚代码或者回滚的注解,都无法使用dbTwo
2.Vue的下拉框值与回显值不同,导致汉字回显失败时
2.Vue的number类型作为下拉框值时,需要回显汉字的时候要用=+赋值,可变number类型,回显成功,另外注意字段与传到前台字段的类型是否一致以及字段的位置是在this还是from(比如,当页面初始化时,this或者this.form下无该字段,会出现赋值成功但回显失败的情况)
目前有个更好的解决办法,就是在下拉框中用parseInt(item.id)
或者String(item.id)
具体看你是什么类型,后台接收的是int或者Integer就把前台值强制转int就行
3.时间格式 *如下代码
//时区日期格式转换(TZ) 例如2021-12-20T08:10:34.536Z
changeDate(dateA) {
var dateee = new Date(dateA).toJSON();
var date = new Date(+new Date(dateee) + 8 * 3600 * 1000)
.toISOString()
.replace(/T/g, " ")
.replace(/\.[\d]{3}Z/, "");
return date;
},
xml使用
to_date(#{TIME_BEGIN},'yyyy-mm-dd hh24:mi:ss')或to_date( '2022-04-30 00:00:00', 'yyyy-mm-dd' )
Vue el-date-picker组件回显使用
this.ACTIME = [this.changeDate(this.form.AC_BEGIN).substring(0,10),this.changeDate(this.form.AC_END).substring(0,10)];
4.mybatis创建oracle触发器时报错
①执行语句时数据库工具中就报ORA-24344: 成功, 但出现编译错误
②SQLException: 索引中丢失 IN 或 OUT 参数:: 1
①的解决方案:sql从头到尾查看,防止缺少,等
②的解决方案:在xml语句上使用select语句并在方法旁添加以下语句,可识别触发器中的 “ :NEW. ”
statementType="STATEMENT"
5.JDBC链接数据库时报错
使用select INSTANCE_NAME from v$instance;
在库中查询对应sid是否正确
spring.datasource.primary.jdbcUrl = jdbc:oracle:thin:@IP地址:端口号:sid
6.Vue字符串转数组
直接spilt(“,”)即可,若无 ,则也可以自动识别转为数组形式
7.vue中使用自注册的TinymceEditor富文本组件时出现的问题
1.弹窗显示时,仅在第一次能显示文字,再打开就不回显了,但是右下角字数有(最终没能解决,采用新标签页式打开列表进行强制刷新页面,但调用下列方法不会白屏,不影响美观,比F5式刷新好用)
页面最上头来一个div 进行v-if局部强制刷新
<template>
<div v-if="isRouterAlive">
<page-main>
<el-row>
data() {
return {
isRouterAlive: true
};
},
init(){
this.isRouterAlive = false;
this.$nextTick(function() {
this.isRouterAlive = true;
});
this.getStdMrIcf();//查询方法
}
2.富文本框内组件按钮点击后层级过低,无法覆盖在dialog上(将组件源码css文件z-index大小统一调大。参考链接:博客园-橘子king)
8.oracle中需要添加或修改很长的字符串时,比如:html代码等
1.先声明一个变量(TYPE是定死的不要动,除了汉字部分需要改动,其他都是固定的)
DECLARE clobValue 表名.字段名 %TYPE;BEGIN clobValue :='我是一个长字符串';
2.写入update语句(insert同理)
UPDATE 表名
SET
字段名 = clobValue
WHERE ID = 表id;
3.提交并结束语句
COMMIT;
END;
9.vue 穿梭框回显问题
有时候直接对绑定v-model的值赋值后,不回显
首先检查是否为 正确的数组类型以及是否正确赋值
然后尝试在赋值前先将 数组清空
<transfer
:titles="['待选机构', '已选机构']"
v-model="tmLinks"
:data="List"
@mouseover.native="addTitle"
>
</transfer>
this.tmLinks = [];
for (let index = 0; index < res.length; index++) {
this.tmLinks[index] = res[index].CODE_ +'-'+ res[index].NAME_;
}
10.layui请求后方法状态为:canceled
由于ajax启用的异步模式 所以方法在执行的时候不会等待ajax请求方法执行完再进行重载。
请求体这样写,去除异步模式
$.ajax({
url: 地址,
type: 'post',
async: false,//去除异步
11.Java添加多条记录时id重复问题 采用同步锁定
/**
* 同步锁定,同一时间多个访问时,会对后面的访问进行堵塞,防止id重复
*/
synchronized (idSql) {
/**
* 调用id查询 执行idsql这个语句查max(id)+1
*/
/**
* 调用添加方法
*/
insertXXX = XXX(X);
}
12.Java+layui 报解析异常(Could not parse as expression)
js哪里改成
<script th:inline="none">
取消内联样式
13.Oracle排序倒序时,空值在最上方的解决办法
sql修改如下
SELECT 字段名,case when 字段名 is null then 0 else 1 end as is_null
order by is_null,字段名
原理:通过case when进行判断,对空值进行识别成数字1,非空为1,然后进行排序,空值就会到最下面,排序的时候再加上对应字段名,就可以按照正常顺序倒序
14.mysql时间差计算
例:SELECT TIMESTAMPDIFF(MONTH,‘2009-10-01’,‘2009-09-01’);
结果为-1
interval可是:
SECOND 秒 SECONDS
MINUTE 分钟 MINUTES
HOUR 时间 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
15.mysql 查询结果为null 或 空字符串时,返回指定字符串
SELECT IF ( ifnull( 字段, ‘’ ) = ‘’, ‘返回的字符串’, 字段) AS 别名(或者不要也可以) FROM table
16.js 图片转base64
function fileToBase64(file){ //file转bse64
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (e) {
return e.target.result
}
}
17.页面自动循环调用方法(vue、js通用)
直接写在script标签内即可,和方法同级。
js写法
setInterval(方法名, 10000); //指定每隔10秒刷新一次
vue写法
setInterval(this.方法名, 1000)//指定每隔1秒刷新一次
18.list.add时,所有数据被最后一个覆盖
对于List来说,如果T是引用类型,那保存的是引用,如果是值类型,保存的是值本身
故在循环中,使用
//放到for循环里面
Map<String,String> map = new HashMap<String,String>();
19.数据库精度设置
SELECT `CAST(pdsl AS DECIMAL(18,2))` pdsl from kcb_pdjlmx
使用CAST函数,然后将数字转为DECIMAL类型,该类型不会损失精度,18代表长度18位,能够适配大小各种数据,2代表保留小数点后位数2位
20.vue 表格行内容赋值弹窗后导致弹窗内容改动,表格也改动
- es6解构赋值写法(把复杂类型的对象里的属性是简单类型的 一个个复制属性过去)如果对象里只有简单类型 没有复杂类型用解构赋值即可。
this.current = {...row};
- 把复杂类型先转成字符串 字符串复制没有引用问题 然后再转过来(深度克隆,把值复制过去 不复制引用,相当于拷贝一份一样的值 但是值没联系)
this.current =-JSON. parse(JSON.stringify(row));
第一种基本的都可以使用了,比较复杂的使用第二种,拷贝转换一下。
适用于编辑页面的传值,直接在父页面调用的时候使用就可以。
使用中发现如果在第一个子组件的mounted处写会造成变量丢失,而后面的子组件不受影响,猜测是后面子组件点击时刷新缓存了可以跟上数据,而第一个可能是因为没缓存完毕,具体原因不明,等找到原因后补充。
21.数据库添加、修改时数据存在汉字报错
错误内容:
java.sql.SQLException: Incorrect string value: ‘\xE6\x97\xBA\xE4\xBB\x94’ for column ‘bce_inspectors’ at row 1
解决办法:ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4;
22.Sql server数据库执行超过100MB的文件提示内存不足
亲测400Msql文件10多分钟跑完
解决办法:
进入sql所在文件夹,打开cmd,执行如下语句
osql -S "127.0.0.1" -U "sa" -P "sa" -i 1.sql
23.JavaScript 对键值对数组进行操作
Object.keys(color).forEach(function(key){
console.log(key);//循环key
console.log(obj[key]);//循环对应key值的value
});
24.数据库按照1、2、3、4排序
一般数据库排序都是1、11、2、3这样排序,而非正常排序
使用如下语句正常排序:
order by (case when evaluation_Id >= '1' and evaluation_Id < '9999999' then 1 else 2 end) ASC
25.移动端请求接口
后台作为Java的话需要带上
'Content-type':'application/x-www-form-urlencoded'
的请求头。
此处以若依框架作为例子,其他框架同样
26.windows 下cmd 重启mysql
关闭
net stop mysql
启动
net start mysql
27.Java split 根据多字符截取
str.split("[,\\_]");
28.Mysql 导入文件过大时
报错信息 :
1153 - Got a packet bigger than 'max_allowed_packet' bytes
set global max_allowed_packet=524288000;
29.Vue ele-pro-table 清空数据
<ele-pro-table ref="table" ………> ……</ele-pro-table>
/**
* 表格数据清空
*/
this.$refs.table.data = [];
30.IDEA 自动整理代码
在大多数集成开发环境(IDE)中,可以使用以下快捷键来自动整理代码:
Windows / Linux: Ctrl + Alt + L
macOS: Cmd + Option + L
这些快捷键可以根据不同的IDE进行修改。以下是常见的IDE中修改自动整理代码快捷键的方法:
IntelliJ IDEA:
打开 “Settings”(Windows / Linux)或 “Preferences”(macOS);
在左侧面板中找到"Keymap";
在搜索栏中输入 “Reformat Code”;
右键单击 “Reformat Code” 并选择 “Add Keyboard Shortcut”;
按下你想要的新快捷键组合,然后点击 “OK”。
Eclipse:
打开 “Window” 菜单,选择 “Preferences”;
在左侧面板中找到 “General” -> “Keys”;
在搜索栏中输入 “Format”;
找到 “Format” 或 “Source -> Format”;
在下方的 “Binding” 输入框中,点击并输入你想要的新快捷键组合;
点击 “Apply” 或 “OK”。
30.Vue 数组倒序
slice()方法用于从数组中提取一个新的数组,并返回该新数组。
reverse()方法用于反转数组中的元素。
this.list.slice().reverse()
31. Maven 报错
1、删除~/.m2/repository/对应目录或目录下的*.lastUpdated文件,然后再次运行maven命令
或者
2、修改maven 仓库下的_remote.repositories 中改为 central
例如:
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Tue Apr 27 23:51:14 CST 2021
sqljdbc4.jar>central
=
sqljdbc4-4.0.pom>central
=
32. Oracle 查询实例名
查询实例名:
select instance_name from v$instance;
33. Sql Server查询自增 (实现oracle的rownum)
查询实例名:
select ROW_NUMBER()OVER(ORDER BY 任意一个可以排序的字段 DESC) as id,* from 表名;
34. Mysql 数字相减所得值错误
使用
REPLACE
函数去掉数字中的
,
,例如:
REPLACE ( 字段名1 ',', '' ) - REPLACE ( 字段名2 ',', '' )
35. Mysql 带序号
SELECT
id,userid,subject,score, (@i :=@i + 1) AS '序号'
FROM
tb_score,
(SELECT @i := 0) AS itable;
36. Vue select标签选中后不生效
加上选中事件即可
@change="chooseDTChange"
chooseDTChange(){
this.$forceUpdate()
}
37. Sqlserver 报错 create connection SQLException, url: jdbc:sqlserver://xxxx:1433;DatabaseName=chisdb_fkyy;encrypt=true;trustServerCertificate=true, errorCode 0, state 08S01
com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接。错误:“客户端首选项[TLS12]不接受服务器选择的协议版本TLS10”。
1.进入jdk安装路径,例如:C:\Program Files\Java\jdk-16.0.1\conf\security\java.security
或者 jdk和jre目录下直接搜索java.security
修改即可,jdk改完不行接着改jre
2.修改jdk.tls.disabledAlgorithms=附近的值
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA,
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL,
include jdk.disabled.namedCurves
这三行前面加#
注释起来就行
35. Oracle count(1) 无数据时返回空
使用nvl
函数判断
select nvl( (select count(1) from xxx),0) form dual
36. vue 数组 filter 筛选
会返回数组结果
data.filter((item) => item.字段名 === '值');
37. Java监听器或其他组件类中引用mapper或工具类报空指针
1、
@Autowired
public XxxCommon xxxControlCommon= new XxxControlCommon();
2、
private static MrInErrorMapper mrInErrorMapper;
@Autowired
public void setMrInErrorMapper(MrInErrorMapper mrInErrorMapper) {
QualityControlCommon.mrInErrorMapper = mrInErrorMapper;
}
@[TOC](38. Cause: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK)
pom中添加orai18n即可
<!--oracle-->
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 兼容orcale字段-->
<dependency>
<groupId>cn.easyproject</groupId>
<artifactId>orai18n</artifactId>
<version>12.1.0.2.0</version>
</dependency>
39. MySql 报错 sql_mode=only_full_group_by
执行如下语句:
- 查看sql_mode
select @@global.sql_mode;
1. 直接从sql查询工具中修改处理。
如果里面包含 ONLY_FULL_GROUP_BY,那么就重新设置,在数据库中输入以下代码,去掉ONLY_FULL_GROUP_BY即可:
SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
– 刷新后重新连接
flush privileges;
2. 从mysql配置文件中处理。
打开 MySQL 配置文件 my.cnf(windows为my.ini)。
添加或修改如下数据行
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
重启mysqlservice mysqld restart
40. Windows终止端口进程
1、查询进程PID
netstat -ano | findstr "<port_number>"
2、终止端口
taskkill /F /PID <pid_number>
41. Windows CMD mysql命令
启动MySQL服务:
net start mysql
停止MySQL服务:
net stop mysql
重启MySQL服务:
net restart mysql
42. Uniapp 双重循环提示:v-for 暂不支持循环数据
将原有的
@click="previewPdf(item)"
改为
@click="()=>previewPdf(item)"
即可