mybatis和ibatis动态列名声明处理方式

当用mybatis的时候习惯用HashMap映射sql结果,比较少用实体类,其实道理是一样的,就算用实体类也会有动态列返回结果时出现一些问题。这是因为mybatis或ibatis默认是预编译的,当项目在启动的时候就把sql返回的映射结果先预编译了一遍,映射回去的列是固定的,当再次查询改变列名的时候就拿不到值变成null了,怎么解决这个问题呢。
要实现动态调用表名和字段名,就不能使用预编译了,mybatis需添加statementType="STATEMENT"。ibatis需添加remapResults="true",两个操作方式会有点不一样,道理是一样的,就是取消预编译,每次拿结果的时候都要映射一遍。

此时,因为是用的非预编译,所以sql里就不能用#传参啦,都要改成$穿参,要想预防sql注入的,要在java代码里对参数做一下处理。

ibatis:


ibatis动态列名加属性remapResults

mybatis:


mybatis动态列名加属性statementType
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容