Mybatis-Flex 踩坑 @Column注解
问题所在### SQL: INSERT INTO tts_record(id, user_id, api_key_id, model_id, model_key, text, voice, audio_url, audio_data, format, characters, duration, status, client_ip, create_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)Java对象数据库字段数据库字段是驼峰不是下划线的根因MyBatis-Flex 的 Column 只负责连哪个字段不负责最终列名——最终列名还要被 camelToUnderline再转一遍。Column(userId) 只代表我要关联字段 userId不代表列名就叫 userId。完整链条Column(userId) → 告诉 Flex用这个值当基础列名 → camelToUnderline true → 强制转成 user_id你以为是 Column(userId) → 列名 userId实际是 Column(userId) → 临时名 userId → camelToUnderline 又转一次 → 最终列名 user_id解决1 单个表开启所以修掉它很简单——把 Table 改成Table(value tts_record, camelToUnderline false)这之后 Column(userId) 才会等于它表面写的意思——列名 userId。解决2 全局配置column-naming-strategy: no_change改之前的逻辑链Column(userId) → 临时名 userId → camelToUnderline true → 又转成 user_id → 最终列名加上 no_change 后Column(userId) → 直接用 userId → 最终列名