zoukankan      html  css  js  c++  java
  • 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(?,?,?) ,数据传入时自动进行数据类型识别并填充,则没有以上报错。

  • 相关阅读:
    VPS CenteOS Linux 上传 下载文件(Apache配置、SSH)
    tar命令加密压缩
    操作系统命令技巧备忘录
    网络流量分析-PCAP切割、筛选、合并
    【Shell】30分钟关闭Tcpdump,开启Tcpdump、检测目录大小终止任务
    大数据做安全的网站
    WinRAR代码执行漏洞CVE-2018-20250
    Linux嗅探ettercap
    WindowsPE权威指南-PE文件头中的重定位表
    推荐书籍-恶意软件分析诀窍与工具箱
  • 原文地址:https://www.cnblogs.com/Comet-Fei/p/11946206.html
Copyright © 2011-2022 走看看