MybatisPlus分页排序查询字段带有下划线的坑及解决
这篇文章主要介绍了MybatisPlus分页排序查询字段带有下划线的坑及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
目录
MybatisPlus分页排序查询字段带有下划线
MybatisPlus字段名称有下划线查询为null
原因分析
解决方案
MybatisPlus分页排序查询字段带有下划线
如果使用MybatisPlus的自动转驼峰命名法,分页排序查询的字段带有下划线时,会出问题。
1 2 3 4 5 6 | 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 做字段映射,带下划线的字段值查询不到。
1 2 3 4 5 6 7 8 9 10 11 | < select id= "pageW_XKXMSJLXRSearch" resultType= "cjw.nic.niceasy.szyzgts.module.wy_ysgl.wy_01.wy_01_03.entity.W_XKXMSJLXR" > SELECT temp .* FROM ( SELECT t.* from w_xkxmsjlxr t INNER JOIN w_xkxmjbxx wx ON t.SSXKXMJBXX_ID = wx.ID AND wx.SCBJ = 0 and t.scbj = 0 INNER JOIN s_xzqh sx ON sx.QHDM = #{qhdm} and wx.XZQHDM like CONCAT( '%' ,sx.XJQHDMBDS, '%' ) ) as temp ${ew.customSqlSegment} </ select > |
原因分析
Mybatis-plus默认开启驼峰转换,ssxkxmjbxx_id 字段会被转换为 ssxkxmjbxxId ,自然查询不到。
解决方案
(1)关闭 Mybatis-plus 驼峰转换,这样虽然能解决问题,但是会影响整个项目,得不偿失。
(2)采用 resultMap 做映射,自己写映射关系。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <! -- 通用查询映射结果 --> <resultMap id= "BaseResultMap" type= "cjw.nic.niceasy.szyzgts.module.wy_ysgl.wy_01.wy_01_03.entity.W_XKXMSJLXR" > <id column = "ID" property= "id" /> <result column = "SSXTDM" property= "ssxtdm" /> <result column = "SSGCDM" property= "ssgcdm" /> <result column = "SSXKXMJBXX_ID" property= "ssxkxmjbxx_id" /> <result column = "SSGLDW_ID" property= "ssgldw_id" /> <result column = "GLDWLX" property= "gldwlx" /> <result column = "LXRJSDM" property= "lxrjsdm" /> <result column = "XM" property= "xm" /> <result column = "SZBM" property= "szbm" /> <result column = "ZW" property= "zw" /> <result column = "SJH" property= "sjh" /> <result column = "BGDH" property= "bgdh" /> <result column = "CZ" property= "cz" /> <result column = "YX" property= "yx" /> <result column = "LXDZ" property= "lxdz" /> <result column = "QQ" property= "qq" /> <result column = "BZ" property= "bz" /> <result column = "SCBJ" property= "scbj" /> <result column = "SCJL_ID" property= "scjl_id" /> <result column = "CJR_ID" property= "cjr_id" /> <result column = "CJSJ" property= "cjsj" /> <result column = "ZHXGR_ID" property= "zhxgr_id" /> <result column = "ZHXGSJ" property= "zhxgsj" /> </resultMap> < select id= "pageW_XKXMSJLXRSearch" resultMap= "BaseResultMap" > SELECT temp .* FROM ( SELECT t.* from w_xkxmsjlxr t INNER JOIN w_xkxmjbxx wx ON t.SSXKXMJBXX_ID = wx.ID AND wx.SCBJ = 0 and t.SCBJ = 0 INNER JOIN s_xzqh sx ON sx.QHDM = #{qhdm} and wx.XZQHDM like CONCAT( '%' ,sx.XJQHDMBDS, '%' ) ) as temp ${ew.customSqlSegment} </ select > |
ps: 采用 Mybaits-plus 代码生成器,免去写繁琐映射的烦恼!
以上为个人经验,希望能给大家一个参考
原文链接:https://blog.csdn.net/bhy5683/article/details/107608394