我想将对象的所有字段插入一行,但是我不知道确切的文件名。 MyBatis支持吗?
答案 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。也许您必须为您的项目提供一些代码,所以我会给您更多建议