登录mysql区分大小写

开发过程中,发现登录没有大小写的区分,后加以补充,现做记录。
登录区分大小写有两种实现方式:

  1. java代码实现
  2. mysql实现

java代码实现

先从数据库取出数据,在代码中进行登录账号的对比,此处,我拿出代码中的一部分,可参考,无法直接使用。
采用java字符串的compareTo方法进行比较,若结果不等于0,则存在大小写区别。
想详细了解compareTo()方法,可参照java字符创compareTo方法和insert方式的使用

        SysUser user = userRightsClient.findUserByLoginName(userName); //获取用户类  SysUser类中包含用户信息()
        if (null == user) {
            throw new UnknownAccountException("用户名不存在!");//抛出未识别账户异常
        }else {
            if(user.getLoginName().compareTo(userName) != 0){
                throw new UnknownAccountException("用户名不存在!");//抛出未识别账户异常
            }
        }

mysql数据库实现

可对mysql数据库中特定字段进行大小写控制,控制方式如下:
*_bin区分大小写
*_ci不分区大小写
*_cs区分大小写,但不建议使用
登录mysql区分大小写_第1张图片
下面对linux系统和windows系统,数据库大写小区分做详解:

linux系统下:
mysql中控制数据库名和表名的大小写敏感由参数lower_case_table_names控制,为0时表示区分大小写,为1时,表示将名字转化为小写后存储,不区分大小写。
mysql> show variables like ‘%case%’;
±-----------------------±------+
| Variable_name | Value |
±-----------------------±------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
±-----------------------±------+
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、字段内容默认情况下是大小写不敏感的。

windows系统下:
可在创建表和字段时进行控制
字段值的大小写由mysql的校对规则来控制。提到校对规则,就不得不说字符集。字符集是一套符号和编码,校对规则是在字符集内用于比较字符的一套规则 。
一般而言,校对规则以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束 。比如 utf8字符集,utf8_general_ci,表示不区分大小写,这个是utf8字符集默认的校对规则;utf8_general_cs表示区分大小写,utf8_bin表示二进制比较,同样也区分大小写 。
测试实例可参考添加链接描述

你可能感兴趣的:(Java基础)