目录
1、环境
PostgreSQL数据库、SpringBoot 2.2.5.RELEASE、mybatis-plus 3.31
2、异常
2.1、mapper.xml执行sql
<select id="query" resultType="Map">
SELECT u.id,u.user_name
FROM odc_sys_user u
WHERE u.user_name = 'S'
</select>
项目运行打印出来的日志信息:
SELECT u.id,u.user_name
FROM odc_sys_user u
WHERE u.user_name = 's'
得到错误的结果
为什么项目运行后的sql,把‘S’自动转换为小写的's'呢?
2.2、数据库连接工具执行sql
SELECT u.id,u.user_name
FROM odc_sys_user u
WHERE u.user_name = 'S'
3、异常原因
默认情况下,PostgreSQL会将列名和表名全部转换为小写状态。
4、解决办法
不要的sql中写死,使用参数传递的方式。
<select id="query" resultType="Map">
SELECT u.id,u.user_name
FROM odc_sys_user u
<where>
<if test="keyWord != null and keyWord !='' ">
AND u.user_name = #{keyWord}
</if>
</where>
</select>
项目运行后的日志信息:
SELECT u.id,u.user_name
FROM odc_sys_user u
WHERE u.user_name = 'S'
sql没有发生变化,得到正确的结果。