MybatisPlus分页排序查询字段带有下划线的坑及解决

目录

  • MybatisPlus分页排序查询字段带有下划线
  • MybatisPlus字段名称有下划线查询为null
    • 原因分析
    • 解决方案

MybatisPlus分页排序查询字段带有下划线 【MybatisPlus分页排序查询字段带有下划线的坑及解决】如果使用MybatisPlus的自动转驼峰命名法,分页排序查询的字段带有下划线时,会出问题。
page = new Page<>(pageNo, pageSize); OrderItem orderItem = new OrderItem(); orderItem.setColumn("create_date"); orderItem.setAsc(isAsc); page.addOrder(orderItem); return page;

如果这样封装分页对象,字段是create_date的话,在最终执行时,order by的字段会自动变成createDate。
但是数据库是下划线的,就导致找不到字段,如果改成createDate,他还是按createDate去排序,无法解决。不知道大家遇到过这个坑没有。
最终我是改数据库字段为createdate了

MybatisPlus字段名称有下划线查询为null 在Mybatis-plus中自己写sql查询时,采用 resultType 做字段映射,带下划线的字段值查询不到。
SELECT temp.*FROM (SELECT t.*from w_xkxmsjlxr tINNER JOIN w_xkxmjbxx wx ON t.SSXKXMJBXX_ID = wx.ID AND wx.SCBJ = 0 and t.scbj = 0INNER JOIN s_xzqh sx ON sx.QHDM = #{qhdm} and wx.XZQHDM like CONCAT('%',sx.XJQHDMBDS,'%')) as temp${ew.customSqlSegment}


原因分析
Mybatis-plus默认开启驼峰转换,ssxkxmjbxx_id 字段会被转换为 ssxkxmjbxxId ,自然查询不到。

解决方案
(1)关闭 Mybatis-plus 驼峰转换,这样虽然能解决问题,但是会影响整个项目,得不偿失。
(2)采用 resultMap 做映射,自己写映射关系。
SELECT temp.*FROM (SELECT t.*from w_xkxmsjlxr tINNER JOIN w_xkxmjbxx wx ON t.SSXKXMJBXX_ID = wx.ID AND wx.SCBJ = 0 and t.SCBJ = 0INNER JOIN s_xzqh sx ON sx.QHDM = #{qhdm} and wx.XZQHDM like CONCAT('%',sx.XJQHDMBDS,'%')) as temp${ew.customSqlSegment}

ps: 采用 Mybaits-plus 代码生成器,免去写繁琐映射的烦恼!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    推荐阅读