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 代码生成器,免去写繁琐映射的烦恼!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 一个选择排序算法
- 排序(归并排序)
- 【图解】9张图彻底搞懂堆排序
- Mybatis|Mybatis Plus 分页插件
- vue|vue 上移 下移 删除 排序