Python 官方文档:入门教程 => 点击学习
目录mybatis #{}无法自动添加引号解决mybatis #{}与${} 单引号解决办法验证mybatis #{}无法自动添加引号 传入string类型时,无法自动添加引号,导致
传入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>
今天使用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://lsjlt.com/news/162484.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0