我有一个属性定义表,第二个表包含实际的属性值:
table propdef: id, name, description
table props: id, propdefid, userid, value
这样,我可以为用户动态创建属性。当我想为用户更新属性时,我必须检查props表是否存在propdefid / userid行,然后在此上使用update或create。
现在,我首先查询数据库,然后决定在Java代码中要做什么。有没有办法在ibatis sqlmap中做到这一点-我的Java代码中没有额外的逻辑?
我正在使用mysql作为数据库。
最佳答案
在继续之前,您需要停止阅读以下文章:http://tonyandrews.blogspot.com/2004/10/otlt-and-eav-two-big-design-mistakes.html
如果您仍然认为EAV是必经之路,那么仍然有希望。我不能在ibatis / java级别上提出建议,但是我可以告诉您看看INSERT ...在双重密钥更新上。这会将您的两个语句更改为一个。
关于mysql - ibatis在创造值(value)之前检查是否存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1325057/