Ano*_*der 5 java mysql spring jpa spring-data-jpa
ClientsRepository 类
public interface ClientsRepository extends JpaRepository<ClientsEntity, Long> {
boolean existsByClientId(String clientId);
}
Run Code Online (Sandbox Code Playgroud)
ClientsEntity 类
@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "clients")
public class ClientsEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String clientId;
}
Run Code Online (Sandbox Code Playgroud)
客户表
| id | client_id |
|---------------------|------------------|
| 1 | ABC |
|---------------------|------------------|
调用existsByClientId("abc") 时它返回true,如何强制检查大小写?
实际结果:
existsByClientId("abc") --> true
existsByClientId("ABC") --> true
预期结果:
existsByClientId("abc") --> false
existsByClientId("ABC") --> true
Java 版本 8
Spring Boot 版本 2.1.2.RELEASE
mysql-connector-java 版本 5.1.46
默认情况下,派生的 SQL 查询区分大小写。然而,正如文中所说然而,正如文件
\n\n\n\n\n方法解析器支持为单个属性(例如,findByLastnameIgnoreCase(\xe2\x80\xa6))或支持忽略大小写的类型的所有属性(通常为 String 实例\xe2\x80\x89\xe2\x80)设置 IgnoreCase 标志。 \x94\xe2\x80\x89 例如,findByLastnameAndFirstnameAllIgnoreCase(\xe2\x80\xa6))。是否支持忽略大小写可能因商店而异,因此具体商店的查询方法请参阅参考文档中的相关部分。
\n
由于我们使用的是 MySQL 数据库,大小写敏感度取决于服务器、数据库和连接排序规则,默认排序规则(utf8mb4_0900_ai_ci)不区分大小写,使得比较不区分大小写。与其他数据库进行比较时产生意想不到的结果。
\n\n从MySQL case insensitive select的解决方案来看,将列排序规则更改为区分大小写是最简单的,不需要更改代码。
\n| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |