ORACLE+Mybatis的一些批量操作及树查询
来源:互联网 发布:知乎的卡通动物图标 编辑:程序博客网 时间:2024/06/06 04:11
参照网上的资料,在自己的项目中实际运用可行,记在这里,以防遗忘!
数据表结构
<resultMap type="**.**.**.OrgVO" id="orgMap"> <id property="orgId" column="ORG_ID" jdbcType="VARCHAR"/> <result property="orgNo" column="ORG_NO" jdbcType="VARCHAR"/> <result property="orgName" column="ORG_NAME" jdbcType="VARCHAR"/> <result property="orgLevel" column="ORG_LEVEL" jdbcType="INTEGER"/> <result property="parOrgId" column="PAR_ORG_ID" jdbcType="VARCHAR"/> <!-- 父机构ID --> <result property="state" column="STATE" jdbcType="INTEGER"/></resultMap>
1、批量插入
<insert id="addOrgs" parameterType="java.util.List"> insert into DIM_SYS_ORG ( ORG_ID, ORG_NO, ORG_NAME, ORG_LEVEL, PAR_ORG_ID, STATE ) <foreach collection="list" item="item" index="index" separator="union all"> (select #{item.orgId,jdbcType=VARCHAR}, #{item.orgNo,jdbcType=VARCHAR}, #{item.orgName,jdbcType=VARCHAR}, #{item.orgLevel,jdbcType=INTEGER}, #{item.parOrgId,jdbcType=VARCHAR}, #{item.state,jdbcType=INTEGER} from dual ) </foreach> </insert>
2、批量更新
<update id="updateOrgs" parameterType="java.util.List"> begin <foreach collection="list" item="item" separator=";"> update DIM_SYS_ORG set ORG_NO = #{item.orgNo,jdbcType=VARCHAR}, ORG_NAME =#{item.orgName,jdbcType=VARCHAR}, ORG_LEVEL = #{item.orgLevel,jdbcType=INTEGER}, PAR_ORG_ID = #{item.parOrgId,jdbcType=VARCHAR}, STATE = #{item.state,jdbcType=INTEGER} where ORG_ID = #{item.orgId,jdbcType=VARCHAR} </foreach> ;end; </update>
3、批量删除,与MySql等一致
<delete id="delOrgs" parameterType="java.util.List"> delete from DIM_SYS_ORG where ORG_ID in <foreach collection="list" item="item" open="(" close=")" separator=","> #{item} </foreach> </delete>
4、树查询
使用oracle提供的connect by结构化查询进行树查询,基本语法如下:
select ... from tablename where 条件3 start with 条件1 connect by prior 条件2; 注:若prior缺省:则只能查询到符合条件的起始行,并不进行递归查询;注:使用时需特别注意条件的关系,prior后面的条件顺序影响到查找方向
1、通过根节点遍历子节点,查询整个树,从树干到树叶 select * from DIM_SYS_ORG where 1=1 start with id=1 connect by prior ORG_ID= PAR_ORG_ID 2、通过子节点追溯根节点,从树叶到树干 select * from test where 1=1 start with id=1 connect by prior PAR_ORG_ID= ORG_ID
实际运用(查找对应id的机构及其子机构ID):
<select id="queryOrgIds" parameterType="java.util.List" resultType="java.lang.String">select ORG_ID from DIM_SYS_ORGstart with <foreach collection="list" item="item" index="index" separator="OR">ORG_ID = #{item.orgId}</foreach>connect by prior ORG_ID = PAR_ORG_ID</select>
注:Mysql并没有提供树查询机制,若树的深度没有超过4,则可用left join来实现;其他情况就需要使用储存过程或程序代码来实现了!
阅读全文
0 0
- ORACLE+Mybatis的一些批量操作及树查询
- oracle+mybatis的批量操作
- Mybatis Oracle批量操作
- mybatis 对 oracle 的批量操作,
- mybatis 的crud及批量cud操作
- mybatis批量查询(oracle)
- mybatis批量操作Oracle数据
- Mybatis之批量操作-Oracle
- mybatis 批量的操作
- MyBatis的批量操作
- mybatis的批量操作
- SSM之Mybatis对数据库的查询以及批量操作
- MyBatis+oracle 批量插入数据的一些问题
- mybatis 操作(批量插入,批量修改,批量删除, 分页查询)
- mybatis中Oracle数据库的批量增删改操作小结
- Oracle批量操作(基于Mybatis的实现)
- MyBatis 中 批量操作如查询
- MyBatis批量操作和多参数查询
- 默认参数值
- git log按作者过滤提交
- 针对android&ios yuv旋转、镜像、格式转换、裁剪 算法实现
- hihocoder1049(分治)
- 获取Spring MVC注解@ResponseBody的一种实现
- ORACLE+Mybatis的一些批量操作及树查询
- 转发和重定向
- AOP的实现机制
- Matlab学习 ---图像旋转(最邻近像素法)
- Linux 文件基本属性
- Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
- MYSQL第一谈:ubuntu下如何安装MYSQL
- 解决hive注释中文乱码
- RequestBodyAdvice和ResponseBodyAdvice