今天遇到一个狗血的问题

使用springmvc+mybatis的时候

如一个SELECT语句如此

<select id="list" parameterType="java.util.Map" resultMap="user">

SELECT

*

FROM

user

<trim prefix="where" prefixOverrides="AND">

<if test="username!=null">

username = #{username}

</if>

</trim>

</select>

数据库为Mysql

假如我要搜索的

username

wanglaoju

那么我搜

wanglaoju

,

WANGLAOJU

,

Wanglaoju

都可以出现相同的结果。

Mybatis的搜索是大小写不敏感的吗?

如果不是,那么我这个可能是什么原因?

这个和Mybatis关系不大,说白了他到最后也是用JDBC驱动传递数据,和你手写JDBC传的SQL没啥区别。

这个是看你的数据库设置的,mysql默认是字段大小写不敏感的,通过配置文件可以修改。

mysql默认是不区分大小的

例如,一般查询:

Sql代码 收藏代码

SELECT * FROM U WHERE name LIKE ‘a%’;

SELECT * FROM U WHERE name LIKE ‘A%’;

其结果是一样的,为了区分’A%’和’a%’,可以这么做:

Sql代码 收藏代码

SELECT * FROM U WHERE binary name LIKE ‘a%’;

SELECT * FROM U WHERE binary name LIKE ‘A%’;

仅仅多了一个binary,就可以得到不同的结果!

当然,如果需要建表时强制区分大小写,可以这么写:

Sql代码 收藏代码

create table table_name(

name varchar (20) binary

);

就这么简单!

mysql大小写敏感和系统有关,推荐个库,

log4jdbc

,来打印下执行的sql,直接复制到数据库跑下看结果

<dependency>

<groupId>com.googlecode.log4jdbc</groupId>

<artifactId>log4jdbc</artifactId>

<version>1.2</version>

</dependency>

因为你设置了这个吧

7c599c0c4eb00c30fd37a858238047ba.png

来个传送门 http://www.cnblogs.com/exmyth/p/3616672….

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐