MyBatis动态列插入:如何获取动态列对应属性值?
解决方案
你可以在???的位置填写#{${item}},利用MyBatis的OGNL表达式嵌套解析来动态获取对应属性的值。
完整的SQL语句示例
<insert id="insertWording" parameterType="my.pkg.Wording"> INSERT INTO wordings (id, parentId, <foreach collection="@my.pkg.LangUtls@getLangs()" item="item" separator=",">${item}</foreach>) VALUES (#{id}, #{parentId}, <foreach collection="@my.pkg.LangUtls@getLangs()" item="item" separator=","> #{${item}} </foreach>) </insert>
原理说明
${item}会先被MyBatis解析为LangUtils.getLangs()返回的具体属性名(比如prop1、prop2)- 外层的
#{}会基于这个解析后的属性名,从传入的Wording实例中获取对应属性的值,同时还能自动处理SQL注入问题,比直接使用${}更安全
内容的提问来源于stack exchange,提问作者feiyuerenhai
相关产品推荐
相关产品推荐

