记有一次使用mybatis时mysql不区分大小写

    是这样的,我们的数据库都是有专门的人管理的,所以一直也没怎么纠结他的配置,反正已经被别人优化过了。知道有一天,偶然的机会下发现查询过程中mysql在查询过程中,对where中的条件并没有区分大小写。因为还没有遇到这种情况,当时真是一副日了狗的表情。

    当时使用的是Spring+Mybatis,很自然,我把锅丢给了Mybatis,什么玩意儿!居然不区分大小写!然而找了大半圈发现并没有人因为使用了Mybatis出现了这个问题,也没有在文档中找到查询时对于参数的限制。

    于是就上segmentfault上提问了,然后就忘掉了这件事,今天登陆发现有回答解决我的疑惑,所以来记录一下。

    问题出在mysql的设置身上,当时也并非没有怀疑是mysql的问题,然而一样是搜索无果放弃了这个因素。

    好吧,原因也很简单,只是顺便发发牢骚。

    其实跟建立数据库的时候选择的排序规则有关。

    utf8_bin 将字符串中的每一个字符用二进制数据存储,区分大小写。

    utf8_genera_ci 不区分大小写,ci为case insensitive的缩写,即大小写不敏感。

    utf8_general_cs 区分大小写,cs为case sensitive的缩写,即大小写敏感。

    如果想自在几个字段上用改变这些特性,设置列的排序规则即可。

    相信碰到问题的已经恍然大悟了。

    接下来自己调试测试吧。

你可能感兴趣的:(mysql,mybatis)