情况是这样,类似下面:
有6级目录,6个表表示,c1,c2,c3,c4,c5,c6 表中pid指向上级目录id
还有一个目录模板表cm,cid,type两个字段指定一个目录信息,假设cm表里有个name属性现在要修改第一级目录(c1表),那么业务要求如下:
1. 用这个目录的id,查询cm(type=1),如果存在则修改,不存在则插入
2. 用这个id,查询c2表里的子目录id,用这些子目录id,逐个查询cm(type=2),来判断是修改还是插入
3. 一直循环到c6表这个过程现在的实现就按上面所属,查询目录表,查询cm表,更新或插入,速度超级慢。我现在用类型的Sql update cm set name = :name where cid in(select id form c6 where 6.id in(...))速度还可以接受,但是有两个问题(oracle):
1. 插入,我要用sql语句直接来判断插入或更新,因为速度主要在查询上,还有oracle有个magree语句的,不知道能不能实现
2. 如果能解决第一个问题,还有就是插入时cm表的主键id,这个是用hibernate的uuid.hex方式生成的,现在手写sql插入这个值不知道怎么搞??