如何使用MyBatis迭代对象的所有字段?

时间:2018-11-01 05:55:50

标签: java mysql sql mybatis

我想将对象的所有字段插入一行,但是我不知道确切的文件名。 MyBatis支持吗?

3 个答案:

答案 0 :(得分:1)

Mybatis在需要表达的地方使用OGNL,包括collection的{​​{1}}属性。

OGNL allows调用静态方法,以便您可以利用此方法。

使用默认脚本引擎(假设属性名称与列名称匹配),您可以执行以下操作来生成字段列表:

foreach

请注意,这未经测试,只是在这里演示了如何实现此目的的想法。

我个人没有使用<bind name="objectProperties" value="@org.apache.commons.beanutils.BeanUtils@describe(myParameter).entrySet()" /> INSERT INTO mytable ( <foreach index="propertyName" item="propertyValue" collection="objectProperties" separator=","> ${propertyName} </foreach> ) VALUES ( <foreach index="propertyName" item="propertyValue" collection="objectProperties" separator=","> @{propertyValue} </foreach> ) ,因为我更喜欢使用velocity scripting engine。借助速度脚本引擎,这绝对可以做到:

foreach

您还需要通过将以下配置添加到#set( $objectProperties = $BeanUtils.describe($myParameter) ) INSERT INTO mytable ( #foreach($property in $objectProperties) ${property.key} #end ) VALUES ( #foreach($property in $objectProperties) @{property.value} #end ) 来将对公共域BeanUtils类的引用添加到速度上下文中:

mybatis-velocity.properties

答案 1 :(得分:-1)

我认为您应该使用SQL语句select into来完成此要求。

答案 2 :(得分:-1)

您的pojo s properties should be consistent with the table列,并且autoMapping应该为true。也许您必须为您的项目提供一些代码,所以我会给您更多建议