ibatis 在创建值之前检查是否存在
我有一个属性定义表,第二个表保存实际属性值:
table propdef: id, name, description
table props: id, propdefid, userid, value
这样我就可以为我的用户动态创建属性。当我想更新用户的属性时,我必须检查 props 表中是否存在 propdefid/userid 行,然后对此使用 update 或 create 。
现在我首先查询数据库,然后决定在我的 java 代码中做什么。有没有办法在 ibatis sqlmap 中做到这一点 - 在我的 java 代码中不需要额外的逻辑?
我使用mysql作为数据库。
I have a property definition table and second one that holds the actual property values:
table propdef: id, name, description
table props: id, propdefid, userid, value
This way i can dynamically create properties for my users. When I want to update a property for a user I have to check the props table if a propdefid/userid row exists and then either use update or create on this.
Right now I am first querying the db and then deciding on what to do in my java code. Is there a way to do that in the ibatis sqlmap - without extra logic in my java code?
I am using mysql as db.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在继续之前,您需要停下来阅读这篇文章:http://tonyandrews.blogspot.com/2004/10/otlt-and-eav-two-big-design-mistakes.html
如果您仍然认为 EAV 是解决问题的方法走吧,还有希望。我无法在 ibatis/java 级别提供建议,但我可以告诉您查看 INSERT ... ON DUPLICATE KEY UPDATE。这会将您的两个语句更改为一个。
before you go any farther, you need to stop and read this article: http://tonyandrews.blogspot.com/2004/10/otlt-and-eav-two-big-design-mistakes.html
if you still decide that EAV is the way to go, there is still hope. i can't advise at the ibatis/java level, but i can tell you to look at INSERT ... ON DUPLICATE KEY UPDATE. this change your two statements in to one.