JAVA开发中容易忽略的问题记录

🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

🍓 更多文章请点击
在这里插入图片描述在这里插入图片描述

开发中容易忽略的问题记录

一、字符串排序问题

1.1 问题描述

表结构

create table test_order(
    id         int auto_increment comment '主键'
        primary key,
    sort_value varchar(128) null comment '排序字段',
    name       varchar(128) null comment '名称'
) comment '测试排序';

表测试数据
在这里插入图片描述现在业务中需要按照sort_value进行升序排序

select sort_value,name from test_order order by sort_value;

结果
在这里插入图片描述

我们会发现并没有按照预想的 1,2,10进项排序,这是为什么呢?

在 MySQL 中,sort_valuevarchar(128)类型的

在字符串排序中, “10”会在“2”前面是因为字符串是按字符的 字典顺序 进行比较的。让我们详细看看这个过程:

  1. 字符比较: 字符串排序是 逐字符进行的 。对于“10”和“2”,首先比较它们的第一个字符。
  2. 第一个字符的比较: “10”的第一个字符是“1”,而“2”的第一个字符是“2”。在ASCII或Unicode编码中,“1”的值小于“2”的值。
  3. 排序结果: 因为“1”小于“2”,所以“10”被认为小于“2”,即使“10”在数值上大于“2”。

1.2 解决方法

在实际应用中,选择排序方法取决于你的具体需求和数据特性。如果你的数据始终是有效的数字字符串,并且你希望按数值排序那么转换为数值类型进行排序是合适的。

有的版本不一样可能有的函数无法使用,所以自行判断

SELECT sort_value,name FROM test_order ORDER BY CAST(sort_value AS UNSIGNED);SELECT sort_value,name FROM test_order ORDER BY sort_value + 0;

二 、Mybatis-plus中saveBatch()等批量接口慢问题

2.1 问题描述

采用了(Mybaties-Plus)自带的saveBatch()方法时,将Excel中大量数据导入到系统中,需要花费几分钟的时间

2.2 解决方法

一般都是由于数据库连接url上没有配置批量操作的属性,只需要在url上加上如下属性即可,

rewriteBatchedStatements=true

示例:

jdbc:mysql://数据库地址/数据库名?useUnicode=true&characterEncoding=UTF8&allowMultiQueries=true&rewriteBatchedStatements=true

加上之后就会发现,saveBatch的速度直线提升,效果还是可以的

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream_sky分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值