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

Mybatis实现数据上移、下移、置顶与置底介绍 在一些管理系统中,经常有一些需求需要对产生的列表数据进行上移、下移、置顶与置底操作,此时需要一定的SQL功底,下面介绍一下在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
) ;

代码100分

插入数据展示原始排序

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

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

业务实现

数据上移

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

SQL实现

代码100分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>
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";
</update>

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

上移后结果

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

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

数据下移

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

SQL实现

代码100分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>
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";
</update>

下移后结果

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

数据置顶

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

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>
update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL+1 where st.ORDER_VAL&lt;":orderVal" AND st.prent_id=":prentId";
update MENU_TREE st set st.ORDER_VAL="1" where st.SID=":sid";
</update>

置顶后效果

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

数据置底

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

SQL实现

这是MySQL环境下的实现

update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL-1 where st.ORDER_VAL&gt;"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&gt;"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>
update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL-1 where st.ORDER_VAL&gt;":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";
</update>

Oracle下实现:

<update>
begin 
update MENU_TREE st set st.ORDER_VAL=st.ORDER_VAL-1 where st.ORDER_VAL&gt;":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;
<update>

置底后效果

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

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

Mybatis中大于小于的处理

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

原符号 < <= > >= & " "
替换符号 &lt; &lt;= &gt; &gt;= &amp; &apos; &quot;

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

第二种处理方式:

大于等于
<![CDATA[ >= ]]>
小于等于
<![CDATA[ <= ]]>

例如:sql如下: create_date_time <![CDATA[ >= ]]> #{startTime} and create_date_time <![CDATA[ <= ]]> #{endTime}

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11070.html

(0)
上一篇 2022-12-17
下一篇 2022-12-17

相关推荐

  • oracle异常处理代码_oracle中抛出异常什么意思

    oracle异常处理代码_oracle中抛出异常什么意思语句执行过程中,由于各种原因使得语句不能正常执行,可能会造成更大错误或整个系统的崩溃,所以PS/SQL提供了异常(exception)着一处理的方法来防止此类情况的发生。在代码运行的过程中无论何时发生

    2023-03-16
    150
  • Python Coursepoint Plus: 为你的编程技能升级提供一站式解决方案

    Python Coursepoint Plus: 为你的编程技能升级提供一站式解决方案随着信息技术的发展,编程已经成为一个非常重要的技能。编程不仅在IT行业中得到广泛应用,而且在其他行业中也已经变得非常重要。学习编程不仅可以提升个人技能,而且可以帮助人们更好地理解和掌握计算机科学,这对未来的职业和事业发展都是非常有帮助的。

    2023-12-05
    107
  • Python的字符串计数方法应用与示例

    Python的字符串计数方法应用与示例在Python中,字符串计数是一个非常常见的操作。Python内置的字符串方法和模块中提供了各种字符串计数的方法,包括计算字符串中某个字符出现的次数、计算一个字符串在另一个字符串中出现的次数、计算字符串中某个子串出现的次数等。

    2024-02-05
    101
  • CentOS6.5静默安装Oracle11g实践「建议收藏」

    CentOS6.5静默安装Oracle11g实践「建议收藏」今日测试安装Oracle11个,最初使用CentOS7安装,但是有部分内核参数设置失败,故而通过CentOS6.5安装,特此记录。 1.安装前准备工作 1.1.修改主机名 vi /etc/sysco…

    2023-02-01
    159
  • MySQL通配符与正则表达式

    MySQL通配符与正则表达式通配符 通配符必须全文匹配时才为真,使用LIKE关键字 |字符|示例|含义| | | |: | |_|"a_b"|任意一个字符"axb",其中x可以使任意字符,

    2023-05-13
    143
  • MySQL学习笔记(25):常见问题

    MySQL学习笔记(25):常见问题本文更新于2020-05-04,使用MySQL 5.7,操作系统为Deepin 15.4。 忘记roo密码 使用mysqld_safe –skip-grant-tables跳过权限系统启动服务。 不

    2023-03-28
    178
  • PyCharm修改背景颜色为中心

    PyCharm修改背景颜色为中心PyCharm是一款由JetBrains公司开发的Python IDE,采用Python语言编写,支持多个主流操作系统,如Windows、Linux和MacOS。该编辑器具有强大的功能和灵活的设置,因此备受编程人员的青睐。PyCharm支持多种颜色主题设置,包括背景颜色、字体颜色等,其中背景颜色是十分重要的设置之一。本篇文章将以PyCharm修改背景颜色为中心,向读者介绍如何自定义PyCharm的背景颜色,使其满足个人喜好及需求。

    2024-07-07
    40
  • mysqlbinlog日志内容_binlog日志收集

    mysqlbinlog日志内容_binlog日志收集前言:binlog 用于记录数据库执行写入性操作的日志信息,以二进制的形式保留在磁盘中。它是由 Server 层进行记录的,使用任何存储引擎都会产生 binlog。 实验准备 我们通过 Docker

    2023-05-02
    140

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注