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

相关推荐
莳光.9 分钟前
122、java的LambdaQueryWapper的条件拼接实现数据sql中and (column1 =1 or column1 is null)
java·mybatis
给我整点护发素11 分钟前
Flink执行sql时报错
大数据·sql·flink
日里安1 小时前
8. 基于 Redis 实现限流
数据库·redis·缓存
EasyCVR1 小时前
ISUP协议视频平台EasyCVR视频设备轨迹回放平台智慧农业视频远程监控管理方案
服务器·网络·数据库·音视频
Elastic 中国社区官方博客2 小时前
使用真实 Elasticsearch 进行更快的集成测试
大数据·运维·服务器·数据库·elasticsearch·搜索引擎·集成测试
明月与玄武2 小时前
关于性能测试:数据库的 SQL 性能优化实战
数据库·sql·性能优化
网安_秋刀鱼3 小时前
PHP代码审计 - SQL注入
sql·web安全·网络安全·php·1024程序员节
qq_441996053 小时前
Mybatis官方生成器使用示例
java·mybatis
PGCCC4 小时前
【PGCCC】Postgresql 存储设计
数据库·postgresql
PcVue China6 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle