Excel数据导入数据库、Mybatis整形参数为零不生效,$赋值和#赋值的区别详解,Vue对象赋值踩坑

本文详述了批量导入Excel数据至数据库的多种方法,包括使用数据库工具、Excel公式及编程实现。同时,深入解析MyBatis处理整型参数、判空及SQL赋值的细节,对比$与#在SQL预编译中的不同,以及Vue对象赋值的常见误区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Excel数据导入数据库

问题:如何把Excel表格数据导入数据库的表中(数据量很大不可能一条条插入)?

解决方案:

(1)   首先试用数据库连接工具导入Excel表格功能,简单方便直接,但是有可能数据会出现不正确的情况,比如某个字段要求特定位数不足的前面补零,但是通过工具导入后数据前面的零自动去掉了从而达不到预期的效果,这时需要先将表格的数据转换为文本,然后利用Excel公式(=REPT())前面补零保存后再导入即可;

(2)  使用Excel的公式(=CONCATENATE())将数据拼接为sql插入语句中的正确格式,然后运行sql即可批量插入;

(3)  使用程序语言编写Excel数据导入工具,运行程序插入数据。

二、Mybatis整形参数为零不生效,判空需要判断空字符串,datetime类型不能作判空字符串操作

问题(1):Mybatis整形参数为零不生效

解决方案:需要<if test="... or data==0">sql 语句</if>

问题(2):数据库字段判空不能只写<if test="data != null"></if>?

解决方案:判空还需要判断空字符串,正确方式:<if test="data != null and data != '' "></if>

问题(3):数据库字段datatime类型不能作判空字符串操作?

解决方案:不能,只需要:<if test="data != null"></if>

三、Mybatis sql语句$赋值和#赋值的区别详解

区别:

(1)  #{ }是预编译处理,MyBatis在处理#{ }时,它会将sql中的#{ }替换为?,然后调用PreparedStatement的set方法来赋值,传入字符串后,会在值两边加上单引号,如上面的值 “4,44,514”就会变成“ ‘4,44,514’ ”;
(2)  ${ }是字符串替换,MyBatis在处理{ }时,它会将sql中的${ }替换为变量的值,传入的数据不会加两边加上单引号。

注意:使用${ }会导致sql注入,不利于系统的安全性!

SQL注入:就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。常见的有匿名登录(在登录框输入恶意的字符串)、借助异常获取数据库信息等

应用场合:
1. #{ }:主要用户获取DAO中的参数数据,在映射文件的SQL语句中出现#{}表达式,底层会创建预编译的SQL;

2. ${ }:   主要用于获取配置文件数据,DAO接口中的参数信息,当美元符号出现在映射文件的SQL语句中时创建的不是预编译的SQL,而是字符串的拼接,有可能会导致SQL注入问题.所以一般使用$接收dao参数时,这些参数一般是字段名,表名等,例如order by {column}。

注:

1. ${}获取DAO参数数据时,参数必须使用@param注解进行修饰或者使用下标或者参数#{param1}形式;

2. #{}获取DAO参数数据时,假如参数个数多于一个可有选择的使用@param。

参看网址:https://blog.csdn.net/Mrs_chens/article/details/90403648

四、Vue对象赋值踩坑

问题:vue定义的对象数据初始化后对某些属性改变赋值不能使用的方式?

解决方案:

比如一个对象为user: {

userName: '',

age: ''

}

对象初始化后user.userName=‘xiaoming’,user.age=18,这时候想要改变age的值,不能这样赋值:

this.user={

age: 20

}

这样赋值是错误的,表面上看着像只是把年龄重新赋值了,其实这样会影响userName的值,会导致userName的值会被清空,正确的赋值方式:

this.user.age=20;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值