起初发现这个问题是因为导入文件时,用户输入的导入参数不规范,在字段中有逗号和空格一起出现,就会导致mybatis保存时发生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、在实体类保存时,添加去空格的校验
- 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}来赋值