PostgreSQL数据库执行mapper.xml时遇到的单词大小写问题入坑记

目录

 

1、环境

2、异常

   2.1、mapper.xml执行sql

   2.2、数据库连接工具执行sql

3、异常原因

4、解决办法


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没有发生变化,得到正确的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi,all

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值