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

相关推荐
OceanRoy7 小时前
数据库表的设计
数据库·内连接·外连接·er图·表的约束·三大范式·多表连接
Pniubi8 小时前
怎么排查慢SQL,怎么解决?
java·数据库·sql
Decay__12 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
茶栀(*´I`*)12 小时前
SQL 性能分析:从慢查询日志到执行计划的完整定位方法
数据库·sql
艺杯羹13 小时前
1Panel 装好后 ufw 仍是 inactive:一次服务器安全盲区复盘
服务器·数据库·安全·网络安全·系统架构·实战·1panel
code2cat14 小时前
【随笔】MCP工具重试:任务已经创建,响应丢了怎么办
数据库·mcp
wuyk55516 小时前
Spider-第10讲-SQLite持久化与去重
数据库·爬虫·sqlite
乌暮17 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
小此方18 小时前
Re:Mysql数据库基础篇(十二):什么是事务、事务解决了什么问题、事务的四大属性、事务的操作方式
数据库·mysql
flash俊杰19 小时前
v0.5-01 让桌面 AI 助手记得住:预算组装、递归摘要、长期记忆与评估基线
数据库·安全·架构