Mybatis-plus对于mysql数据库varchar型字符串的排序

在使用Mybatis-plus操作MySQL数据库时,遇到varchar类型的字段排序不生效的问题。通过将排序语句改为`hd_value+0`,成功实现了字符串字段的数值排序。这种方法对于处理包含数字的字符串字段特别有用。

Mybatis-plus对于mysql数据库varchar型字符串的排序

    昨天客户又出了一个大屏的数据,不过碰到一个问题就是要根据字符型的字段排序,表结构如下
在这里插入图片描述
不过这个字段的类型是varchar的,一开始我用mybatis-plus是这么写的:

fRiskListQueryWrapper.orderByDesc("hd_value");

但是这么排下来是不生效的,没办法只能想办法了,于是就改进了方法:

 fRiskListQueryWrapper.orderByDesc("hd_value+0");

接着就生效了

在 Spring Boot 项目中整合 JPA 和 MyBatis-Plus 时,处理字符串数据的存储主要涉及实体类字段定义、数据库表设计以及配置调整。以下从多个方面详细说明实现方法。 ### 定义实体类中的长字符串字段 对于需要存储较长文本内容的字段,例如文章正文或 JSON 字符串,可以使用 `String` 类并在注解中标明长度限制。JPA 中可通过 `@Column(length = 65535)` 指定字段长度[^1],而 MyBatis-Plus 则无需特别注解,直接声明为 `String` 即可: ```java @Entity public class Article { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length = 65535) private String content; // Getter and Setter } ``` ### 数据库表结构设置 确保数据库中对应的字段支持长字符串。以 MySQL 为例,可使用 `TEXT` 或 `LONGTEXT` 类来存储大文本内容: ```sql CREATE TABLE article ( id BIGINT AUTO_INCREMENT PRIMARY KEY, content LONGTEXT ); ``` 若使用 PostgreSQL,则推荐使用 `TEXT` 类,它默认支持任意长度的字符串[^3]。 ### 配置 Hibernate 的 DDL 自动更新策略 Spring Boot 使用 JPA 时,默认通过 Hibernate 管理数据库 schema。为避免字段长度不足导致插入失败,可以在 `application.yml` 中启用自动更新策略: ```yaml spring: jpa: hibernate: use-new-id-generator-mappings: false properties: hibernate: format_sql: true show-sql: true ddl-auto: update ``` 该配置允许 Hibernate 在运行时根据实体类定义自动调整数据库表结构[^3]。 ### MyBatis-Plus 对长字符串的支持 MyBatis-Plus 不强制要求特定的字段映射方式,只需保证实体类字段与数据库列名称一致即可。对于长字符串字段,建议使用 `VARCHAR` 类配合足够大的长度限制(如 65535),或者直接使用 `TEXT` / `LONGTEXT` 类[^2]。 ### 示例:混合使用 JPA 与 MyBatis-Plus 的 Repository 接口 当项目同时引入 JPA 和 MyBatis-Plus 时,可以通过不同的接口分别操作数据库。例如,使用 JPA 提供基础 CRUD 功能,而 MyBatis-Plus 提供增强查询功能: ```java // JPA Repository public interface ArticleJpaRepository extends JpaRepository<Article, Long> { } // MyBatis-Plus Mapper public interface ArticleMapper extends BaseMapper<Article> { } ``` 结合上述两种方式,可在服务层灵活调用不同数据访问接口,满足复杂业务需求。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值