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}来赋值

相关推荐
有一个好名字5 小时前
MyBatis-Plus 三种数据库操作方式详解 + 常用方法大全
数据库·mybatis
-Xie-5 小时前
Redis(八)——多线程与单线程
java·数据库·redis
G探险者5 小时前
为什么 VARCHAR(1000) 存不了 1000 个汉字? —— 详解主流数据库“字段长度”的底层差异
数据库·后端·mysql
Albert Tan6 小时前
Oracle EBS R12.2.14 清理FND_LOBS并释放磁盘空间
数据库·oracle
L.EscaRC7 小时前
图数据库Neo4j原理与运用
数据库·oracle·neo4j
知己80807 小时前
docker搭建图数据库neo4j
数据库·docker·neo4j
TDengine (老段)7 小时前
什么是 TDengine IDMP?
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
谅望者7 小时前
数据分析笔记08:Python编程基础-数据类型与变量
数据库·笔记·python·数据分析·概率论
Boilermaker19927 小时前
【MySQL】备份与恢复
数据库·mysql
q***7487 小时前
数据库高安全—openGauss安全整体架构&安全认证
数据库·安全·架构