美文网首页
mybatis和ibatis动态列名声明处理方式

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

作者: haiyong6 | 来源:发表于2020-07-26 19:09 被阅读0次

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

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

ibatis:


ibatis动态列名加属性remapResults

mybatis:


mybatis动态列名加属性statementType

相关文章

网友评论

      本文标题:mybatis和ibatis动态列名声明处理方式

      本文链接:https://www.haomeiwen.com/subject/vqlglktx.html