JAR文件是许多信息经过封装后形成的捆绑体。那么jar文件该怎么打开呢?接下来就一起来就看看吧。
如何打开jar文件
在安装好java环境条件下,按下Windows+R键,在弹出的运行框中输入CMD(不区分大小写)。
先在弹出的黑框框中切换到.jar文件的所在目录,在下.jar的文件目录为:
F:install,所以切换到F:install。
在黑框中输入java -jar ****.jar,****表示要运行的.jar文件名
敲回车键后,.jar文件就开始成功运行了。
以上就是打开jar文件的操作步骤了。
Java程序分页优化
1.数据库表及数据
表结构
-- ------------------------------ Table structure for t_card-- ----------------------------DROP TABLE IF EXISTS `t_card`;CREATE TABLE `t_card` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` bigint(20) NOT NULL COMMENT 'user的id', `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名', `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_user_id`(`user_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1001 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '卡' ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for t_order-- ----------------------------DROP TABLE IF EXISTS `t_order`;CREATE TABLE `t_order` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `order_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单号', `money` decimal(20, 2) NOT NULL COMMENT '消费金额', `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_order_no`(`order_no`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1005 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单' ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for t_order_pay-- ----------------------------DROP TABLE IF EXISTS `t_order_pay`;CREATE TABLE `t_order_pay` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `order_id` bigint(20) NOT NULL COMMENT 'order的id', `card_id` bigint(20) NOT NULL COMMENT 'card的id', `money` decimal(20, 2) NOT NULL COMMENT '支付金额', `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_order_id`(`order_id`) USING BTREE, INDEX `idx_card_id`(`card_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1001 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单支付' ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for t_user-- ----------------------------DROP TABLE IF EXISTS `t_user`;CREATE TABLE `t_user` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名', `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1001 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户' ROW_FORMAT = Dynamic;
表数据
由于数据太多,已放到gitee上了。
链接地址:
表关联关系
2.一版分页(普通分页)适合场景:关联表查询较少的情况。
优势:减少代码量,减少与数据库的交互。
劣势:可读性会比较差;随着产品的迭代,逻辑会越来越复杂,可维护性变差。
sql
SELECT o.order_no, o.money, o.create_time, op.money op_money, c.`name` card_name, u.`name` user_name FROM t_order o LEFT JOIN t_order_pay op ON o.id = op.order_id LEFT JOIN t_card c ON c.id = op.card_id LEFT JOIN t_user u ON u.id = c.user_id WHERE 1 = 1 AND o.order_no = 'a48c853c76414ea09667404a5be91bb9' AND c.id = 1 AND u.NAME = '张三0' LIMIT 20;
接口
/order/getOrder1List3.二版分页-降低表数量
适用场景:生产环境-关联查询不超过3张表,降低表数量。
优势:增加程序的可维护性、可读性。SQL简化,降低慢sql风险。
劣势:增加代码量;增加与数据库交互次数。
魏氏拆解法
此方法的名字叫“魏氏拆解法”,由魏同学进行的归纳演绎,进行公司推广。
sql
(1)筛选条件-查询user的id
SELECT id, NAME, create_time, update_time FROM t_user WHERE ( NAME = "张三0");
(2)分页SQL,将(1)返回的user.id作为下面的查询条件。
SELECT o.order_no, o.money, o.create_time, op.money op_money, c.`name` card_name, c.user_id user_id FROM t_order o LEFT JOIN t_order_pay op ON o.id = op.order_id LEFT JOIN t_card c ON c.id = op.card_id WHERE 1 = 1 AND o.order_no = "a48c853c76414ea09667404a5be91bb9" AND c.id = 1 AND c.user_id IN ( 1 ) LIMIT 20
接口
/order/getOrder2List4.三版分页-SQL优化(通过id分页)
适合场景:移动端-下滑分页。
优势:效率更高。
劣势:需要前端配合,前端需要记录下下一页的id。
sql
SELECT o.order_no, o.money, o.create_time, op.money op_money, c.`name` card_name, c.user_id user_id FROM t_order o LEFT JOIN t_order_pay op ON o.id = op.order_id LEFT JOIN t_card c ON c.id = op.card_id WHERE 1 = 1 AND o.id > 9 ORDER BY o.id ASC LIMIT 20
接口
/order/getOrder3List5.分页要素