Mybatis操作数据时出现:java.sql.SQLSyntaxErrorException: Unknown column 'XXX' in 'field list'
这个错误比较重要,而且很常见,故单独进行说明:
Mybatis出现:Unknown column 'xxx' in 'field list'
先来看一下程序的内部:
dao.addUser("ll111", "ll11");// 添加用户l main函数测试
//添加用户 成功1 失败0
public int addUser(String userPhoneNumber, String userPassword) throws IOException {
//用户的 手机号,姓名(默认手机号),密码
User user = new User(userPhoneNumber, userPhoneNumber, userPassword);
int result = mapper.addUser(user); System.out.println(result); sqlSession.commit();
return result;
}
<!-- 添加用户-->
<insert id="addUser" parameterType="main.pojo.User">
INSERT INTO user(user_phone_number, user_name, user_password)
VALUES (${userPhoneNumber}, ${userName}, '${userPassword}');
</insert>


错误原因:本身来说,三个字段都属于String类型,但是在使用Mybatis时由于用法的错误,致使出现上图的结果,即本来手机号和名字想作为字符串插入,但是xml里却当成了字段名。如果是整数还好,String可以解析整数并且转化为字符串,但是像字母和数字混合,编译器就无法识别。
本质上来说,是Mybatis使用上的错误,不熟悉,理解其实现机理所致。同样的问题,也会出现在其他语句中,所以在实现时注意数据传输的类型!!!
解决方法:也如上图xml代码所示,password的变量使用单引号括住,即可表示为字符串,所以实际上,应该这样写:
<!-- 添加用户-->
<insert id="addUser" parameterType="main.pojo.User">
INSERT INTO user(user_phone_number, user_name, user_password)
VALUES ('${userPhoneNumber}', '${userName}', '${userPassword}');
</insert>
或者进行参数化表示:
<insert id="addUser" parameterType="main.pojo.User">
INSERT INTO user(user_phone_number, user_name, user_password)
VALUES (#{userPhoneNumber}, #{userName}, #{userPassword});
</insert>
这种情况下,VALUES内容为 VALUES(?,?,?) ,数据传入时自动进行数据类型识别并填充,则没有以上报错。
Mybatis操作数据时出现:java.sql.SQLSyntaxErrorException: Unknown column 'XXX' in 'field list'的更多相关文章
- 实体类与数据库字段不匹配问题,java.sql.SQLSyntaxErrorException: Unknown column 'xxx' in 'field list'
控制台报错 ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'user_nam ...
- Mybatis 未设置主键映射报错;Cause: java.sql.SQLSyntaxErrorException: Unknown column 'system_id' in 'field list'
使用MyBatis的时候,主键的字段建议绑定在Bean的属性上面, import javax.persistence.*; public class User { @Id @Column(name = ...
- java.sql.SQLSyntaxErrorException: ORA-00904: "column": 标识符无效
java.sql.SQLSyntaxErrorException: ORA-00904: "column": 标识符无效 首先查看无效的列是不是orcale关键字 , 如果不是 , ...
- java.sql.SQLException: Unknown column 'user0_.user_name' in 'field list' 报错问题
报错信息: java.sql.SQLException: Unknown column 'user0_.user_name' in 'field list'Query is: select user0 ...
- 记录一次无厘头的粗心失误——java后台报错:Unknown column 'xxx' in 'field list'
原因: sql文件马虎,直接用错了仓库.用的不是程序调用的仓库.而自己pojo和mapper还是采用Mybatis的逆向工程生成的.当时搞得很无厘头. 解决方案: sql用到程序指定的仓库就行啦. 总 ...
- MySQL5.7更改密码时出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'
转自:http://blog.csdn.net/u010603691/article/details/50379282 新安装的MySQL5.7,登录时提示密码错误,安装的时候并没有更改密码,后来通过 ...
- Mysql 5.7:更改密码时出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'
1.环境 在新服务器上重新安装了环境,原来是5.6的,就升级到了5.7版本. 2.问题 新安装的MySQL5.7,登录时提示密码错误,安装的时候并没有更改密码,后来通过免密码登录的方式更改密码. 输入 ...
- python - django 执行数据库迁移后数据库并未更新 和 InternalError: (1054, u"Unknown column 'xxx' in 'field list'")问题
一.发生情况:当你修改数据库结构后进行 python manage.py makemigrations 和 python manage.py migrate 后发现控制台会给你返回一个下面的结果,但是 ...
- 使用Mybatis时报错Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
首先保证sql语句在oracle中的编写是正确的,然后在配置文件中插入时就报这样的错误.有可能是因为sql语句后面多了“:”分号,在标签中写分号是错的.如果我写成了 insert into emplo ...
随机推荐
- linux高级技巧:heartbeat+lvs
linux高级技巧:heartbeat+lvs Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 He ...
- 题解 【SDOI2009】HH的项链
题面 解析 这题本来莫队可以过的. 然而,对于某些加强的数据,莫队就得吸氧了.. 所以,本题解还将介绍另一种算法——树状数组. 首先,莫队就不用讲了吧(毕竟只是板子). 那么,开始进入正题(似乎有点啰 ...
- JS单线程和异步
线程和单线程的概念: 线程:是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同 ...
- Mysql入门-对表数据的增删改查
这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mysql的时候, ...
- html5原生js拖拽上传(golang版)
一次只能传一个文件,需在main.go同级目录中建一个upload文件夹 main.go package main import ( "fmt" "io" &q ...
- Twilio收发短信笔记
twlio基本使用 Twilio是一个做成开放插件的电话跟踪服务(call-tracking service),可用来进行短信,图片等信息的集中于转发,貌似只支持北美地区的电话. 现有一个需求是:客户 ...
- win7系统扩展双屏幕时,开启两个屏幕下都显示任务栏,第三方插件
Dual Monitor Taskbar 下载软件 下载地址 https://dual-monitor-taskbar.en.softonic.com/ 安装即可
- HDU 5794 A Simple Chess ——(Lucas + 容斥)
网上找了很多人的博客,都看不太懂,还是大力学长的方法好. 要说明的一点是,因为是比较大的数字的组合数再加上mod比较小,因此用Lucas定理求组合数. 代码如下(有注释): #include < ...
- Git客户端执行命令报错: fatal: Authentication failed for'xxxxx.git',但是又不弹出窗口重新输入用户名和密码的解决办法
1.Git版本:Git-2.17.0 2.引起git报错的原因 在变更远程仓库路径的的时候,弹出过一个窗口输入用户名和密码,但是输错了,之后执行任何拉取和更新的命令都会报如下的错: fatal: Au ...
- EasyUI中对于Grid的隐藏与显示
$('#div_Grid').datagrid('hideColumn', 'mtnDate'); $('#div_Grid').datagrid('showColumn', 'mtnDate');