2009-08-24 32 views
0

之前我有保存实际属性值的属性定义表和第二个:的存在ibatis的支票创造价值

table propdef: id, name, description 
table props: id, propdefid, userid, value 

这样我可以动态创建为我的用户属性。当我想更新用户的属性时,如果propdefid/userid行存在,则必须检查props表,然后使用update或create on this。

现在我首先查询数据库,然后决定在我的java代码中做什么。有没有办法做到这一点在ibatis sqlmap - 没有额外的逻辑在我的Java代码?

我正在使用mysql作为分贝。

回答

1

你再往前走之前,你需要停下来看看这篇文章:http://tonyandrews.blogspot.com/2004/10/otlt-and-eav-two-big-design-mistakes.html

如果你仍然决定EAV是要走的路,还是有希望的。我不能在ibatis/java级别提供建议,但我可以告诉你看看INSERT ... ON DUPLICATE KEY UPDATE。这将你的两个陈述改为一个。

+0

我通常不喜欢EAV - 但在这种情况下不能避免。我会去“插入重复密钥更新”的事情 - 不知道这一点 - 谢谢! – Niko 2009-08-25 23:54:45