昨天同事反馈mybatis保存不了int类型的属性,一直报错,错误信息如下:
Caused by: java.lang.NumberFormatException: For input string: "null" at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at sun.misc.FloatingDecimal.parseDouble(Unknown Source) at java.lang.Double.parseDouble(Unknown Source) at org.apache.ibatis.ognl.OgnlOps.doubleValue(OgnlOps.java:259) at org.apache.ibatis.ognl.OgnlOps.compareWithConversion(OgnlOps.java:144) at org.apache.ibatis.ognl.OgnlOps.isEqual(OgnlOps.java:186) at org.apache.ibatis.ognl.OgnlOps.equal(OgnlOps.java:578) at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:51) at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:210) at org.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:56) at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:210) at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:333) at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:413) at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:395) at org.apache.ibatis.builder.xml.dynamic.OgnlCache.getValue(OgnlCache.java:42) at org.apache.ibatis.builder.xml.dynamic.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:32) at org.apache.ibatis.builder.xml.dynamic.IfSqlNode.apply(IfSqlNode.java:30) at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:29) at org.apache.ibatis.builder.xml.dynamic.TrimSqlNode.apply(TrimSqlNode.java:42) at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:29) at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:29) at org.apache.ibatis.builder.xml.dynamic.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:37) at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:241) at org.apache.ibatis.executor.statement.BaseStatementHandler.<init>(BaseStatementHandler.java:61) at org.apache.ibatis.executor.statement.PreparedStatementHandler.<init>(PreparedStatementHandler.java:36) at org.apache.ibatis.executor.statement.RoutingStatementHandler.<init>(RoutingStatementHandler.java:42) at org.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:348) at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:43) at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:108) at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75) at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:145) ... 51 more
对应配置为:
<if test="downNum!=null and downNum!='null' and downNum!=''"> #{downNum} </if>
错误原因是使用了判断String的条件判断数字类型,正确方式是:
<if test="downNum>=0"> #{downNum} </if>
相关推荐
这种方式看似简单,但需要注意的是,MyBatis会自动处理单引号内的值,将其转换为对应的Java数据类型。对于字符'Y',MyBatis会将其视为一个字符类型。而在Java中,字符类型与字符串类型的比较需要特别处理,直接使用 ...
Mybatis Integer类型参数值为0时得到为空的解决方法 Mybatis 是一个流行的持久层框架,广泛应用于 Java 应用程序中。然而,在使用 Mybatis 进行数据库操作时,经常会遇到一些棘手的问题。其中之一就是当 Integer ...
通常,这些参数可以是简单的Java基本类型,如int、String等,也可以是复杂的对象类型。在本例中,“clazzStudent”暗示我们正在处理一个名为“Student”的类,它可能包含学生的信息,如姓名、年龄、学号等。 ...
- **String**: Redis中的字符串是最基本的数据类型,可以用来存储简单的文本或者数字。 - **Hash**: 哈希是键值对的集合,适合存储对象,键是字段,值是字段对应的值。 - **Set**: 集合是无序的不重复元素集合,...
此外,还提到了“6983”、“18”、“100”等数字,它们可能是课程中提到的某个版本号、重要日期、技术参数或其他意义,但由于片段信息有限,无法准确判断其具体含义。 最后,这份笔记还强调了课程对于开发者的具体...
这份"10万字面试总结Java.pdf"涵盖了Java基础知识、JVM、Spring框架、并发编程、Linux、Dubbo、Mybatis、Springcloud、Spring Boot、消息队列和Zookeeper等多个核心主题,旨在帮助Java开发者全面准备面试。...
Java语言的主要特点是简单易学、丰富的类库、面向对象、与平台无关性、可靠安全以及支持多线程。它的面向对象特性使得程序的耦合度降低,内聚性增强,便于代码的维护和扩展。平台无关性得益于Java虚拟机(JVM),...
除了上述基础知识,Java知识还包括JVM内存管理、多线程与并发编程、Spring框架、Mybatis持久层框架、SpringBoot微服务开发、MySQL数据库优化、SpringCloud微服务架构、Dubbo服务治理、Nginx反向代理与负载均衡、消息...
- **命名规则**:标识符可以包含字母、数字、$和_,但不能以数字开头,不能是关键字。 - **命名规范**:类名采用大驼峰式,变量和方法名采用小驼峰式。 5. **instanceof 关键字**: - **作用**:用于判断一个...
这个实例主要是为初学者提供一个基础的AJAX登录验证教程,通过正则表达式对用户输入的登录信息进行有效性判断。 在Web开发中,传统的登录方式通常会提交表单后跳转或刷新页面来完成验证,但这种体验并不理想,特别...
系统根据设定的考试时间和试题类型(选择题、多选题、判断题)随机抽取题目,学生在规定时间内答题,时间到系统自动提交试卷。自动阅卷功能利用预先定义好的答案进行比对,计算出分数。学生完成考试后,可以查看成绩...
虽然在现代Web应用中,通常会使用更高级的框架如Hibernate或MyBatis,但在某些简单场景下,SQL标签库仍然有其用武之地。例如: - `<sql:query>`:执行SQL查询并返回结果集。 - `<sql:update>`:执行SQL更新语句。 *...
- `if-else if`语句适合于区间或范围判断,而`switch`语句更适合于固定值的选择。 #### 28. 编辑器快捷键 - **Ctrl+Shift+O**: 自动导入未使用的类或接口,这对于清理冗余代码、提高代码整洁度非常有帮助。 #### ...