mysql 下移_[Java教程]MySQL 上移/下移/置顶

[Java教程]MySQL 上移/下移/置顶

0 2018-10-10 12:01:37

在编写网站系统时,难免会用到上移、下移、置顶的功能,今天小编就介绍一下我的思路。

首先,需要一张数据表:CREATE TABLE `a` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, `gender` varchar(255) NOT NULL, `psw` varchar(255) NOT NULL, `seq` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (1, 'zhangsan', 30, 'f', '123456', 1);INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (2, 'lisi', 31, 'f', '123456', 2);INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (3, 'wangwu', 32, 'm', '123456', 3);INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (4, 'zhaoliu', 33, 'm', '123456', 4);INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (5, 'baiqi', 34, 'm', '123456', 5);INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (6, 'hongba', 35, 'f', '123456', 6);

字段中有用的是id和seq,id作为主键标识一条数据,seq标记这条数据的顺序,也是在上移、下移以及置顶操作中,order by的字段。

一、置顶

先说思路,首先,需要获取需要置顶的数据POJO,将表中seq字段小于POJO顺序的所有数据的seq增加1,再将POJO的seq设置为1,最后在查询表时,按seq增序排列,就能看到置顶的效果。

上SQL代码:-- 置顶id=4,seq=4的数据update a set seq = seq+1 where seq<4;update a set seq=1 where id=4;select * from a ORDER BY seq asc

上效果图:

置顶前查询:

bc91bb04e6e9c61e24c974e4440db8f2.gif

置顶后查询:

bc91bb04e6e9c61e24c974e4440db8f2.gif

二、上移

思路:

获取本条数据和上一条数据内容,将两条数据的seq作交换

将原数据库中id为2和3的数据内容交换,从前端传入本条数据的id,即3,获取本条数据内容,将获取到的内容存入POJO3select * from a where id=3

获取上一条数据内容(这里POJO3.getSeq()的值为4,各位小伙伴执行SQL语句时,自行替换),将获取到的内容存入POJO2。SELECT * from a WHERE ( seq < POJO3.getSeq() OR seq=(SELECT MIN(seq) FROM a ) ) ORDER BY seq DESC limit 1

交换POJO2和POJO3的顺序。update a set seq=POJO3的seq值 where id=2;update a set seq=POJO2的seq值 where id=3;

上效果图

上移前查询:

bc91bb04e6e9c61e24c974e4440db8f2.gif

上移后查询:

bc91bb04e6e9c61e24c974e4440db8f2.gif

三、下移

思路:

获取本条数据和下一条数据内容,将两条数据的seq作交换

将原数据库中id为3和4的数据内容交换,从前端传入本条数据的id,即3,获取本条数据内容,将获取到的内容存入POJO3select * from a where id=3

获取下一条数据内容(这里POJO3.getSeq()的值为3,各位小伙伴执行SQL语句时,自行替换),将获取到的内容存入POJO4。SELECT * from a WHERE ( seq > POJO3.getSeq() OR seq=(SELECT MAX(seq) FROM a ) ) ORDER BY seq ASC limit 1

交换POJO3和POJO4的顺序。update a set seq=POJO4的seq值 where id=3;update a set seq=POJO3的seq值 where id=4;

上效果图

下移前:

bc91bb04e6e9c61e24c974e4440db8f2.gif

下移后:

bc91bb04e6e9c61e24c974e4440db8f2.gif

以上均为单独操作数据库文件结果,现附上完整Spring MVC实现上述内容完整代码

本文网址:http://www.shaoqun.com/a/443273.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

MYSQL

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 实现 Mysql 数据同步可以通过以下步骤实现: 1. 连接源数据库和目标数据库,获取连接对象; 2. 查询源数据库中需要同步的数据; 3. 将查询结果写入到目标数据库中; 4. 关闭连接对象。 具体的实现过程可以参考以下代码: ``` import java.sql.*; public class MysqlSync { public static void main(String[] args) { Connection sourceConn = null; Connection targetConn = null; Statement sourceStmt = null; Statement targetStmt = null; ResultSet rs = null; try { // 连接源数据库 Class.forName("com.mysql.jdbc.Driver"); sourceConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/source_db", "root", "password"); sourceStmt = sourceConn.createStatement(); // 查询源数据库中需要同步的数据 rs = sourceStmt.executeQuery("SELECT * FROM source_table"); // 连接目标数据库 targetConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/target_db", "root", "password"); targetStmt = targetConn.createStatement(); // 将查询结果写入到目标数据库中 while (rs.next()) { String name = rs.getString("name"); int age = rs.getInt("age"); targetStmt.executeUpdate("INSERT INTO target_table (name, age) VALUES ('" + name + "', " + age + ")"); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭连接对象 try { if (rs != null) { rs.close(); } if (sourceStmt != null) { sourceStmt.close(); } if (sourceConn != null) { sourceConn.close(); } if (targetStmt != null) { targetStmt.close(); } if (targetConn != null) { targetConn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 这段代码是一个简单的示例,实际应用中需要根据具体需求进行改进和优化。同时,需要注意数据库连接的安全性和性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值