mysql忽略大小写jpa解决_JPA 大小写敏感问题
引言
被舍友问了JPA的查询问题,问题问的我一脸懵逼。
天真的我顺手搭了一个小的JPA项目试一试。
探究
尝试
测试环境:spring-boot 2.1.5.RELEASE、mysql 5.6。
数据表中加了一条数据,用户名是admin。
测试代码如下:
@Test
public void test() {
Teacher teacher1 = teacherRepository.findByUsername("ADMIN");
Teacher teacher2 = teacherRepository.findByUsername("admin");
System.out.println(teacher1);
System.out.println(teacher2);
}
如果teacher1有值的话,说明查询不区分大小写,如果为null,说明区分大小写。
两者都有值,说明查询的时候未区分大小写。
根源
打开JPA的官方文档,根据JPA官方的说明来看,规范里设计的是查询是区分大小写的。
默认区分大小写,如果不想区分大小写使用IgnoreCase关键字。
问题出在MySQL上,经过查阅与请教,是MySQL不区分大小写。
用ADMIN去MySQL里查,也是能查出的数据,与JPA无关。
尝试解决
毕竟生产环境的项目跑着呢,和舍友讨论了讨论觉得用户名的大小写不敏感应该造成不了什么危害。
但是遇到问题就得解决,经过多方参考,发现是mysql中collation的配置问题。
collation [kəˈleɪʃn]
我们建立数据库时都会选择utf8_general_ci,这个collation决定了大小写不敏感。
ci: case insensitive, a is equal to A.
cs: case sensitive, a is not equal to A.
那是不是改成utf8_general_cs问题就解决了呢?
对不起,cs已经被mysql废弃了,没有一个cs的选项。
因为utf8是包含所有语言,针对不同语言的大小比较处理十分困难,遂被mysql抛弃。
既然官方都这么说了,那还纠结大小写干啥呢?
总结
最精髓的就是这两个关键字,请大家务必记住!
ci: case insensitive, a is equal to A.
cs: case sensitive, a is not equal to A.
mysql忽略大小写jpa解决_JPA 大小写敏感问题相关推荐
- mysql忽略大小写jpa解决_春数据JPA查询生成忽略大小写,以避免列数据
我使用的是春天的数据JPA获取使用ignoreCase属性数据为大写:春数据JPA查询生成忽略大小写,以避免列数据 Employee类: import javax.persistence.Entity ...
- docker mysql忽视大小写_Docker安装MySQL忽略大小写问题的问题
Docker安装MySQL忽略大小写问题的问题 连接MySQL: 查看当前mysql的大小写敏感配置 show global variables like '%lower_case%'; +----- ...
- Docker安装MySQL忽略大小写问题的问题
由于linux中mysql的的表名是区分大小写的.所以需要配置my.conf. 所以在docker中需要把配置文件带进去.在宿主机的目录中新建my.conf文件,然后写入如下配置. [mysqld] ...
- Mysql忽略大小写 如何处理
问题描述: 一开发同事在linux下调一个程序老是报错说找不到表,但是登陆mysql,show tables查看明明是已经创建了这张表的!!如下: 1 2 3 4 5 6 7 8 9 10 11 12 ...
- Linux mysql忽略大小写
mysql表忽略大小写 因为linux下mysql默认是要区分表名大小写的.mysql是否区分大小写设置是由参数lower _ case _ table _ names决定的,其中: lower_ca ...
- mysql忽略大小写配置cnetos_CentOS7下安装MYSQL8.X并设置忽略大小写
安装 在官网上下载:mysql80-community-release-el7-2.noarch.rpm.安装方式与5.7没有任何区别.详细见:CentOS7下安装MYSQL5.7. 设置忽略大小写 ...
- mysql存储过程 大小写_MySQL数据记录大小写敏感问题【转】
MySQL大小写敏感 字符串大小写敏感和Mysql的数据库的名字.表名字.字段名字.还有字段值有关. 1.和数据库名字.表名字.存储过程和触发器有关 为0时: 表示区分大小写,使用CREATE TAB ...
- docker安装mysql8 并且忽略大小写问题解决
一.docker安装mysql8 1.拉取镜像.docker pull mysql 2.docker安装mysql,只需要执行docker run --name mysq.db -p 3306:330 ...
- mysql 忽略表大小写_mysql表名忽略大小写问题记录
问题描述: 一开发同事在linux下调一个程序老是报错说找不到表,但是登陆mysql,show tables查看明明是已经创建了这张表的!!如下: mysql> show tables; +-- ...
最新文章
- BZOJ2938:[POI2000] 病毒
- ML之RFDT:利用RF(RFR)、DT(DTR)两种算法实现对boston(波士顿房价)数据集进行训练并预测
- Hive 基础(2):库、表、字段、交互式查询的基本操作
- apache ab压力测试报错apr_socket_recv
- pageContext对象和config对象
- ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
- Dalvik虚拟机简要介绍和学习计划
- php web教程视频教程下载,Web全栈 PHP+React系列视频教程下载
- 作者:何波(1989-),男,就职于中国信息通信研究院互联网法律研究中心
- 连接mysql数据库时提示2003-can t connect to MySQL server on ip(10060)的解决办法
- WordPress 修改固定链接出错(apache2)
- JavaScript-数组相关作业
- 低代码开发平台_如何挑选最适合你的低代码开发平台
- TimeSpan asp.net中时间的运算
- 举例说明在SQL中,DELETE语句与DROP TABLE的区别
- 停用chrome的开发者提醒
- pkcs8格式证书转换pkcs1格式
- 漫画 | 前端发展史的江湖恩怨情仇
- 利用Python制作属于自己的炫酷二维码
- 如何智慧的提问(个人笔记)