iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >解决mybatis#{}无法自动添加引号的错误
  • 717
分享到

解决mybatis#{}无法自动添加引号的错误

2024-04-02 19:04:59 717人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录mybatis #{}无法自动添加引号解决mybatis #{}与${} 单引号解决办法验证mybatis #{}无法自动添加引号 传入string类型时,无法自动添加引号,导致

mybatis #{}无法自动添加引号

传入string类型时,无法自动添加引号,导致sql将值识别为列名,导致SQL失败

解决

使用map类型代替string的传值

Map<String, String> map = new HashMap<>(2);
map.put("userName", userName);
return userMapper.selectUserByName(map);

<select id="selectUserByName" parameterType="map" resultType="userDO">
    select
        user_id as userId,
        user_name as userName,
        user_passWord as userPassword,
        user_level as userLevel,
        user_gmt_create as userGmtCreate,
        user_gmt_modified as userGmtModified
    from user
    where user_name = #{userName}
</select>

mybatis #{}与${} 单引号

今天使用mybitas查询数据库时候报了错

错误信息

提示不知道的列,查看上方的sql语句,发现sql的语法错了,where查询的条件的值少了单引号

-- 错误提示
select `uid`, `username`, `password`, `time`         
from blogs_user     
where username = wu;
-- 正确的sql语句
select `uid`, `username`, `password`, `time`         
from blogs_user     
where username = 'wu';

这时问题就很明显了,就是字符串在sql中需要用单引号引起来,而报错的提示信息中是没有这个单引号的

解决办法

解决办法是将对应的映射文件中的${user.username} 改为 #{user.username},再次运行即可

  <!--  ${user.username}  -->
  <select id="xxx" parameterType="wu.bean.User" resultMap="BaseResultMap">
    select
    <include refid="base_column_list"/>
    from blogs_user
    where username = ${user.username};
  </select>
  <!--  #{user.username} -->
  <select id="xxx" parameterType="wu.bean.User" resultMap="BaseResultMap">
    select
    <include refid="base_column_list"/>
    from blogs_user
    where username = ${user.username};
  </select>

验证

如果要验证是否正确,思路是将成的sql 语句打印出来,因此需要在mybatis-config.xml中加入<setting name="logImpl" value="STDOUT_LOGGING"/>

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "Http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <settings>
    <!--  打印查询语句    -->
    <setting name="logImpl" value="STDOUT_LOGGING"/>
	....
  </settings>
  <typeAliases>
    ....
  </typeAliases>
  
  <mappers>
  	.....
  </mappers>
</configuration>

重新运行程序

使用 ${user.username}

在这里插入图片描述

使用 #{user.username} 

在这里插入图片描述

验证正确!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 解决mybatis#{}无法自动添加引号的错误

本文链接: https://www.lsjlt.com/news/162484.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作