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

相关推荐
数据知道1 分钟前
PostgreSQL 故障排查:万字详解如何找出数据库中的死锁
数据库·postgresql
AI_56789 分钟前
阿里云OSS成本优化:生命周期规则+分层存储省70%
运维·数据库·人工智能·ai
choke23312 分钟前
软件测试任务测试
服务器·数据库·sqlserver
龙山云仓13 分钟前
MES系统超融合架构
大数据·数据库·人工智能·sql·机器学习·架构·全文检索
IT邦德14 分钟前
OEL9.7 安装 Oracle 26ai RAC
数据库·oracle
jianghua00133 分钟前
Django视图与URLs路由详解
数据库·django·sqlite
那我掉的头发算什么34 分钟前
【Mybatis】Mybatis-plus使用介绍
服务器·数据库·后端·spring·mybatis
倔强的石头10635 分钟前
关系数据库替换用金仓:数据迁移过程中的完整性与一致性风险
数据库·kingbase
_Johnny_35 分钟前
ETCD 配额/空间告警模拟脚本
数据库·chrome·etcd
静听山水38 分钟前
StarRocks查询加速
数据库