news 2026/6/10 16:07:47

3. 关键要点:添加`id`后建议给原有联合字段加唯一索引,确保业务数据不重复;实体类需同步添加`id`字段并标记`@TableId`注解。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3. 关键要点:添加`id`后建议给原有联合字段加唯一索引,确保业务数据不重复;实体类需同步添加`id`字段并标记`@TableId`注解。
数据库查询失败,nested exception is org.apache.ibatis.exceptions.PersistenceException:### Error querying database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: SELECT survey_year,division_code,natural_village,province,city,county,county_code,town,town_code,village_community ,id FROM ln_kashin_beck_main ORDER BY ### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: SELECT survey_year,division_code,natural_village,province,city,county,county_code,town,town_code,village_community ,id FROM ln_kashin_beck_main ORDER BY添加主键,id varchar(255)

你希望通过ln_kashin_beck_main表添加id字段作为主键来解决这个查询异常,核心是让MyBatis-Plus能找到对应的id主键列,同时解决ORDER BY空字段的问题,这样生成的SQL就会合法可执行。

下面我帮你完成表结构修改(添加id字段)、更新建表语句,同时补充对应的查询代码修正,彻底解决这个问题。

一、核心修改思路

  1. ln_kashin_beck_main表添加id字段,设为VARCHAR(255)类型、非空、主键(也可设为自增,更贴合MyBatis-Plus默认习惯)。
  2. 保留原有联合字段(survey_yeardivision_codenatural_village),确保业务逻辑不变,仅新增id作为MyBatis-Plus识别的主键。
  3. 修正SQL中的ORDER BY,补充排序字段(优先用新增的id,或原有业务字段)。

二、方案1:直接修改现有表(已创建表,保留数据)

如果表已经在数据库中存在(有数据),用ALTER TABLE语句添加id字段,无需重建表,不丢失现有数据。

-- 给现有表添加id字段,设为VARCHAR(255)、非空、主键-- 若需要手动赋值id,执行此语句(后续插入数据需手动指定id值)ALTERTABLE`ln_kashin_beck_main`ADDCOLUMN`id`VARCHAR(255)NOTNULLFIRSTCOMMENT'主键ID,适配MyBatis-Plus查询',ADDPRIMARYKEY(`id`);-- (可选优化)若想让id自增(更方便,无需手动赋值),建议改为INT类型自增(推荐)-- 先删除上面的语句,执行此语句(更贴合MyBatis-Plus默认主键习惯)ALTERTABLE`ln_kashin_beck_main`ADDCOLUMN`id`INTNOTNULLAUTO_INCREMENTFIRSTCOMMENT'主键ID,自增,适配MyBatis-Plus查询',ADDPRIMARYKEY(`id`);-- 补充:原有联合字段建议添加唯一索引,确保业务唯一性(避免重复数据)ALTERTABLE`ln_kashin_beck_main`ADDUNIQUEINDEX`idx_unique_main`(`survey_year`,`division_code`,`natural_village`)COMMENT'联合唯一索引,确保同村同年份数据不重复';
  • 说明:FIRST表示id字段排在表的第一列,不影响其他字段顺序;添加唯一索引是为了替代原有联合主键的业务唯一性约束。

三、方案2:新建带id字段的表(全新表,无历史数据)

如果是新建表,直接使用下面的建表语句,包含id字段,适配MyBatis-Plus查询。

CREATETABLE`ln_kashin_beck_main`(-- 新增id字段,VARCHAR(255),非空,主键(适配MyBatis-Plus)`id`VARCHAR(255)NOTNULLCOMMENT'主键ID,适配MyBatis-Plus查询',-- 原有核心关联字段(保留业务逻辑)`survey_year`VARCHAR(255)NOTNULLCOMMENT'调查年份(信息铺入,不需要输入,只可选择)',`division_code`VARCHAR(255)NOTNULLCOMMENT'行政区划代码(选择行政村后自动填充,无需录入,已铺入所有行政村代码)',`natural_village`VARCHAR(255)NOTNULLCOMMENT'自然村(屯)(已铺入全部自然村名称,可选择也可手动输入)',-- 原有基础行政区划附加字段`province`VARCHAR(255)NOTNULLCOMMENT'省(信息铺入,不需要输入,只可选择)',`city`VARCHAR(255)NOTNULLCOMMENT'市(信息铺入,不需要输入,只可选择)',`county`VARCHAR(255)NOTNULLCOMMENT'县(信息铺入,不需要输入,只可选择)',`county_code`VARCHAR(255)NOTNULLCOMMENT'县代码(选择县区后自动填充,无需录入,已铺入所有县区代码)',`town`VARCHAR(255)NOTNULLCOMMENT'乡(镇)(信息铺入,不需要输入,只可选择)',`town_code`VARCHAR(255)NOTNULLCOMMENT'乡(镇)代码(选择乡镇后自动填充,无需录入,已铺入所有乡镇代码)',`village_community`VARCHAR(255)NOTNULLCOMMENT'行政村/社区(信息铺入,不需要输入,只可选择)',-- 主键约束(id作为主键),新增联合唯一索引确保业务唯一性PRIMARYKEY(`id`)COMMENT'主键:id,适配MyBatis-Plus查询',UNIQUEINDEX`idx_unique_main`(`survey_year`,`division_code`,`natural_village`)COMMENT'联合唯一索引:确保同调查年份+行政区划+自然村记录不重复')ENGINE=InnoDBDEFAULTCHARSET=utf8mb4 ROW_FORMAT=DYNAMICCOMMENT='大骨节病防治信息主表(基础行政区划信息)';

四、修正MyBatis-Plus实体类(适配id字段)

更新实体类,添加id字段,标记为MyBatis-Plus主键,确保查询时能正确映射。

importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;importlombok.Data;@Data@TableName("ln_kashin_beck_main")// 对应数据库表名publicclassLnKashinBeckMain{// 新增id字段,标记为MyBatis-Plus主键@TableId(value="id")// 对应数据库表的id字段privateStringid;// 若id是INT自增,改为private Integer id;// 原有业务字段(保留不变)privateStringsurveyYear;privateStringdivisionCode;privateStringnaturalVillage;privateStringprovince;privateStringcity;privateStringcounty;privateStringcountyCode;privateStringtown;privateStringtownCode;privateStringvillageCommunity;}

五、修正查询代码(解决ORDER BY空字段问题)

添加id字段后,还需补充ORDER BY的排序字段,避免生成空排序语句,下面给出合法的查询示例。

示例1:基础查询(按id排序)

importcom.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;importorg.springframework.stereotype.Service;importjavax.annotation.Resource;importjava.util.List;@ServicepublicclassLnKashinBeckMainService{@ResourceprivateLnKashinBeckMainMapperlnKashinBeckMainMapper;// 合法查询:按id升序排序,避免ORDER BY空字段publicList<LnKashinBeckMain>listAll(){LambdaQueryWrapper<LnKashinBeckMain>queryWrapper=newLambdaQueryWrapper<>();// 补充排序字段(id),解决ORDER BY空字段问题queryWrapper.orderByAsc(LnKashinBeckMain::getId);returnlnKashinBeckMainMapper.selectList(queryWrapper);}}

示例2:手动编写SQL(避免MyBatis-Plus自动生成错误SQL)

若仍有问题,可直接在XML映射文件中编写合法SQL,明确查询字段和排序字段。

<selectid="listAll"resultType="com.example.entity.LnKashinBeckMain">SELECT id, survey_year, division_code, natural_village, province, city, county, county_code, town, town_code, village_community FROM ln_kashin_beck_main ORDER BY id ASC;<!-- 补充排序字段id,合法有效 --></select>

六、验证问题是否解决

  1. 执行表修改语句(或新建表语句),确认ln_kashin_beck_main表中存在id字段且为主键。
  2. 重启项目,确保实体类修改生效。
  3. 调用查询方法,观察是否能正常返回数据,无异常抛出。
  4. (可选)查看MyBatis-Plus生成的SQL日志,确认SQL为合法语句(如SELECT id,survey_year,... FROM ln_kashin_beck_main ORDER BY id ASC)。

总结

  1. 本次解决问题的核心是给表添加id字段作为主键,适配MyBatis-Plus的默认主键查询规则,解决「查询不存在id列」的问题。
  2. 同时补充ORDER BY的具体排序字段(优先id),解决「空排序语句」的语法错误。
  3. 关键要点:添加id后建议给原有联合字段加唯一索引,确保业务数据不重复;实体类需同步添加id字段并标记@TableId注解。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:12:12

<span class=“js_title_inner“>网络流量监控神器 , Wireshark看着太累了</span>

如果你想知道电脑在后台偷偷连哪些服务器,但Wireshark那界面看着头疼。命令行工具吧,又不够直观。Sniffnet这个项目就是专门解决这个痛点的。GitHub上32.2K星了,Rust写的跨平台网络流量监控工具,界面漂亮得不像开源软件,功能还特别全。实时图表、地理位置、域名解析、自定义通知…

作者头像 李华
网站建设 2026/6/9 21:16:25

<span class=“js_title_inner“>[今日战况]创新高了!黄金有色吃大肉!ETF三因子轮动实盘跟踪!股票量化分析工具QTYX-V3.3.6</span>

前言 我们的股票量化系统QTYX在实战中不断迭代升级!!!分享QTYX系统目的是提供给大家一个搭建量化系统的模版&#xff0c;帮助大家搭建属于自己的系统。因此我们提供源码&#xff0c;可以根据自己的风格二次开发。 关于QTYX的使用攻略可以查看链接&#xff1a;QTYX使用攻略QTYX一…

作者头像 李华
网站建设 2026/6/10 14:10:36

树莓派5+ubuntu24.04+openclaw使用记录

1 安装openclaw 参考连接&#xff08;一键安装openclaw&#xff09;&#xff1a; 官网 https://openclaw.ai/ 菜鸟 OpenClaw (Clawdbot) 教程 | 菜鸟教程 中文文档 https://holtchas.github.io/openclaw-docs-zh/sta…

作者头像 李华
网站建设 2026/6/10 15:37:03

告别Docker拉取超时!三分钟搞定镜像加速与配置文件优化

摘要&#xff1a;本文手把手教你解决Docker拉取镜像时常见的超时错误&#xff0c;通过配置国内镜像源和优化daemon.json文件&#xff0c;让你的Docker体验飞起来&#xff01;最近在部署Docker环境时&#xff0c;你是否也遇到过这样的报错&#xff1f; Error response from daem…

作者头像 李华
网站建设 2026/6/10 14:56:46

<span class=“js_title_inner“>让 AI 也能当“反洗钱专家“——一个通俗易懂的模型训练故事</span>

故事的开端&#xff1a;为什么要做这件事?想象一下,你是一家银行的合规专员。每天要面对厚厚的反洗钱法规文件,还要分析各种复杂的可疑交易案例。有些问题特别棘手:法律条文晦涩难懂,一个条款套着另一个条款真实的洗钱案例千奇百怪,要从蛛丝马迹中发现问题有时候一个问题涉及好…

作者头像 李华
网站建设 2026/6/10 14:53:52

堪比图吧工具箱!入梦工具箱 近百种硬件检测工具

下载链接https://pan.freedw.com/s/aHdahn给需要硬件检测的小伙伴推荐一款实用工具 —— 入梦工具箱&#xff0c;它和热门的图吧工具箱功能几乎一模一样&#xff0c;同样收集了近百种各类硬件检测工具&#xff0c;不管是检测电脑配置、排查硬件故障&#xff0c;还是性能测试&am…

作者头像 李华