我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mybatis实现数据上移、下移、置顶与置底

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mybatis实现数据上移、下移、置顶与置底

介绍

在一些管理系统中,经常有一些需求需要对产生的列表数据进行上移、下移、置顶与置底操作,此时需要一定的SQL功底,下面介绍一下在Mybatis技术下的使用。

具体实现

数据库表

首先设计的表需要有一些要求,此处以一个菜单树为例进行说明。

创建数据库表

表名MENU_TREE,数据库采用MYSQL5.7,建表语句如下:

CREATE TABLE MENU_TREE (
	SID VARCHAR(20),
	CODE VARCHAR(20),
	NAME VARCHAR(50),
	GRADE CHAR(1),
	PRENT_ID VARCHAR(20),
	ORDER_VAL NUMERIC(22,0),
	STATE CHAR(1),
	DEL_TAG VARCHAR(1) DEFAULT "0",
	CRT_OPT VARCHAR(20),
	CRT_TIME TIMESTAMP,
	UPD_OPT VARCHAR(20),
	UPD_TIME TIMESTAMP
) ;

插入数据展示原始排序

可以任意插入数据,本例插入数据后排序如下:

业务实现

数据上移

要求将“人力资源部”放到“会员部”之前,此时需要上移“人力资源部”。

SQL实现

update MENU_TREE st set st.ORDER_VAL= 4 where st.ORDER_VAL= 3 AND prent_id="0";
update MENU_TREE st set st.ORDER_VAL= 3 where st.SID="4";

在Oracle数据库中需要增加BEGIN...END语句。

Mybatis的XML文件


update MENU_TREE st set st.ORDER_VAL=":orderVal" where st.ORDER_VAL=":orderVal"-1 AND prent_id=":prentId";
update MENU_TREE st set st.ORDER_VAL=":orderVal"-1 where st.SID=":sid";

Oracle时需要增加BEGIN...END语句(后文不再赘述)。此处 :参数,表明是外部传入的参数,这些参数是当前操作对象(“人力资源部”)的相应值(后文不再赘述)。

上移后结果

可以看到“人力资源部”移到了“会员部”前面。

数据下移

这是跟数据上移相反的操作,我们将“会员部”下移,实现如下:

SQL实现

update MENU_TREE st set st.ORDER_VAL=4 where st.ORDER_VAL=5 AND st.prent_id="0";
update MENU_TREE st set st.ORDER_VAL=5 where st.SID="3";

Mybatis的XML文件


update MENU_TREE st set st.ORDER_VAL=":orderVal" where st.ORDER_VAL=":orderVal"+1 AND st.prent_id=":prentId";
update MENU_TREE st set st.ORDER_VAL=":orderVal"+1 where st.SID=":sid";

下移后结果

数据置顶

将“战略发展部”置顶,实现如下:

SQL实现

update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL+1 where st.ORDER_VAL<6 AND st.prent_id="0";
update MENU_TREE st set st.ORDER_VAL="1" where st.SID="6";

Mybatis的XML文件


update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL+1 where st.ORDER_VAL<":orderVal" AND st.prent_id=":prentId";
update MENU_TREE st set st.ORDER_VAL="1" where st.SID=":sid";

置顶后效果

数据置底

将“总裁办”置底,实现如下:

SQL实现

这是MySQL环境下的实现

update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL-1 where st.ORDER_VAL>"3" AND st.prent_id="0";
update MENU_TREE st INNER JOIN (select max(ORDER_VAL)+1 max from MENU_TREE WHERE prent_id="0") pt SET st.ORDER_VAL=pt.max where st.SID="2";

mysql中update直接使用select的结果的处理方式需要注意。

Oracle或SqlServer下实现:

update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL-1 where st.ORDER_VAL>"3" AND st.prent_id="0";
update MENU_TREE st set st.ORDER_VAL=(select max(ORDER_VAL)+1 from MENU_TREE WHERE prent_id="0" ) where st.SID="2";

Mybatis的XML文件

这是MySQL环境下的实现


update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL-1 where st.ORDER_VAL>":orderVal" AND st.prent_id=":prentId";
update MENU_TREE st INNER JOIN (select max(ORDER_VAL)+1 max from MENU_TREE WHERE prent_id=":prentId") pt SET st.ORDER_VAL=pt.max where st.SID=":sid";

Oracle下实现:


begin 
update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL-1 where st.ORDER_VAL>":orderVal" AND st.prent_id=":prentId";
update MENU_TREE st set st.ORDER_VAL=(select max(ORDER_VAL)+1 from MENU_TREE WHERE prent_id=":prentId" ) where st.SID=":sid";
end;

置底后效果

以上就是对上移、下移、置顶和置底的实现。下面来说一下Mybatis中对大于小于的处理上文中有用到。

Mybatis中大于小于的处理

此处有两种处理方式,第一种处理方式:

原符号 < <= > >= & " "
替换符号 < <= > >= & ' "

例如:sql如下: publish_time >= #{startTime} and publish_time <= #{endTime}

第二种处理方式:

大于等于
= ]]>
小于等于


例如:sql如下: create_date_time = ]]> #{startTime} and create_date_time #{endTime}

此一细节在使用Mybatis时需要注意。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mybatis实现数据上移、下移、置顶与置底

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mybatis实现数据上移、下移、置顶与置底

介绍在一些管理系统中,经常有一些需求需要对产生的列表数据进行上移、下移、置顶与置底操作,此时需要一定的SQL功底,下面介绍一下在Mybatis技术下的使用。具体实现数据库表首先设计的表需要有一些要求,此处以一个菜单树为例进行说明。创建数据库表表名MENU_TR
Mybatis实现数据上移、下移、置顶与置底
2014-05-11

MyBatis如何实现配置MySql数据库与Spring

这篇文章将为大家详细讲解有关MyBatis如何实现配置MySql数据库与Spring,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.1MyBatis简介 MyBatis 是一个可
2023-05-31

Android的RecyclerView实现列表拖动(移动顺序)交换数据位置

1.先看效果图 这是拖动前的图片 这是拖动列表改变位置后的图片 这里放上视频演示 RecyclerView实现列表拖动交换数据位置 2.主活动MainActivity2类代码如下 import androidx.appco
2023-08-30

Spring+Mybatis 实现aop数据库读写分离与多数据库源配置操作

在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询。因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较
2023-05-31

编程热搜

目录