Mybatis保存时参数携带了逗号和空格导致SQL保存异常

起初发现这个问题是因为导入文件时,用户输入的导入参数不规范,在字段中有逗号和空格一起出现,就会导致mybatis保存时发生sql异常。

异常数据张这样:

sql 复制代码
INSERT INTO enterprise_stratification (
	id,
	create_date,
	create_by,
	update_date,
	update_by,
	del_flag,
	remarks,
	platform_code,
	company_name,
	tax_level,
	industry_attribute,
	listing_attribute,
	primary_business,
	classification_industry,
	equity_financing,
	financ_level,
	is_credit_stain,
	is_equity_transfer,
	is_loss_personnel,
	annual_profit,
	business_income,
	financ_type,
	financ_amount,
	finance_rate,
	fund_use,
	build_project,
	under_investment_project,
	third_party_agency,
	policy_subsidy,
	shareholder_num,
	employee_num,
	legal_representative_name,
	id_number,
	phone_number,
	contact_name,
	contact_number,
	credit_service_demand,
	equity_service_needs,
	financ_service_demand,
	financ_smart_service,
	relisting_service,
	COMMENT,
	contact_time,
	referrer,
	submitter,
	submit_time 
)
VALUES
	(
		'49f2495472774163a6469540ad8a12aa',
		'2023-11-14 20:31:28.32',
		'1',
		'2023-11-14 20:31:28.32',
		'1',
		'0',
		NULL,
		'1',
		'山西七曜生物科技有限公司',
		'以上都不是',
		'科技型中小企业',
		'以上都不是',
		'大健康饮品,茶饮料',
		'零售业',
		'获得过',
		'小于等于100万',
		'否',
		'是',
		'否',
		'10',
		'30',
		'其他',
		'100',
		'5%以内',
		'新品研发和产品销售推广',
		'生产基地',
		'新品研发及渠道建设',
		'其他机构',
		'20',
		'3',
		'10',
		'李曜',
		'140421199510083666',
		'15235566543',
		'李曜',
		'15235566543',
		专项信用深度报告分析,信用评级评价(七牌一证), 信用档案, 信用会员招募,
		股权架构设计服务, 股权估值服务,股权质押融资服务,员工持股计划服务,
		普惠必贷金融产品, 公司股权、债权、贷款、并购融资规模提升服务,
		市场营销管理服务, 法律服务, ,投行推荐咨询服务,特色化标签评定(农业龙头、专精特新、科技型中小企业),
		精准帮扶服务产品, 股权优化服务产品,股权确权服务产品, 券商推荐服务产品,
		'多开展活动和宣传',
		'3',
		'政府机构',
		'小太阳',
	'2023-11-02' 
	)

其中,有些数据是没有用引号引起来,导致mysql认为他们是不同的字段的值

解决的办法:

1、在实体类保存时,添加去空格的校验

java 复制代码
public void setFinancType(String financType) {
		if(StringUtils.isNotBlank(financType)){
			financType = financType.replaceAll("\\s", "");
		}
		this.financType = financType;
	}

if(StringUtils.isNotBlank(financType)){

financType = financType.replaceAll("\\s", "");

}

首先做判空,不为空时去除空格,\\s为所有的空格符。

2、在mybatis中不使用#{value_name} 对实体和数据库字段做赋值,通过${value_name}来赋值

相关推荐
W.Buffer2 小时前
通用:MySQL-深入理解MySQL中的MVCC:原理、实现与实战价值
数据库·mysql
一只小bit3 小时前
MySQL 库的操作:从创建配置到备份恢复
服务器·数据库·mysql·oracle
sanx183 小时前
专业电竞体育数据与系统解决方案
前端·数据库·apache·数据库开发·时序数据库
养生技术人5 小时前
Oracle OCP认证考试题目详解082系列第57题
运维·数据库·sql·oracle·开闭原则
不良人天码星6 小时前
redis-zset数据类型的常见指令(sorted set)
数据库·redis·缓存
心灵宝贝6 小时前
libopenssl-1_0_0-devel-1.0.2p RPM 包安装教程(openSUSE/SLES x86_64)
linux·服务器·数据库
程序新视界8 小时前
MySQL中,IS NULL和IS NOT NULL不会走索引?错!
数据库·mysql·dba
wdfk_prog8 小时前
闹钟定时器(Alarm Timer)初始化:构建可挂起的定时器基础框架
java·linux·数据库
许长安8 小时前
Redis(二)——Redis协议与异步方式
数据库·redis·junit
java_python源码9 小时前
python高校心理健康服务小程序(源码+文档+调试+基础修改+答疑)
数据库·sqlite