项目用到mybatis
1、查询一个列表,返回map,查出3条数据,奇怪的发现A字段在最后一条数据中没有,
2、网上搜索说:mybatis自动把无值的字段过滤掉了,也就是说这条数据的这个字段没值,mybatis就给过滤了,连key在map中都没有。
3、于是网络搜索解决办法,有人提供很笨的办法,显然不可取,绝望时看到有人在网上说用<setting name="callSettersOnNulls" value="true"/>,如果你连这个不知道,就别用mybatis了,好好去学学再用吧。
4、我加上后,报一个拼写错误的异常,callSettersOnNulls 我没写错啊,都是拷贝的,怎么会错,于是网上搜索,网络是个好东西,但是很绝望,资料很少且不全。
5、在坚持不懈努力的努力下,几乎要放弃的情况下,找到个网站,全是英文,幸好我认识几个单词,最终知道是版本问题,fuck!一下午就这样过去了。
6、我们项目是用的mybatis3.1.1,callSettersOnNulls需要至少3.2版本的支持,于是换了jar包
7、启动又报错,一看就是缺cglib的jar包,搜索下有人说和spring整合需要cglib-nodep-2.2.jar,于是maven的pom添加这个。
8、启动成功。
在此特别鸣谢:https://github.com/mybatis/mybatis-3/commit/608209c6a136ebbbd9fce833dc652af803d0ec95
分享到:
相关推荐
`callSettersOnNulls` 是 MyBatis 中的一个重要配置项,它涉及到对象属性赋值的策略,尤其是在处理查询结果集时。 在默认情况下,当从数据库查询结果中映射对象时,MyBatis 只会调用那些查询结果中有值的字段对应的...
MyBatis 自动填充时间字段示例代码 MyBatis 是一个基于 Java 的持久层框架,它提供了对数据库的交互操作。其中一个常见的需求是自动填充时间字段,即在实体类中自动填充 created_on 和 updated_on 字段。今天,我们...
6. **Settings**:MyBatis的设置项可以调整其行为,如开启或关闭延迟加载(lazyLoadingEnabled),设置是否允许空标示(callSettersOnNulls)等。 7. **Variables**:可以定义变量,供配置文件其他部分引用。 ...
21. **callSettersOnNulls**: 如果设置为`true`,当结果集中值为`null`时,MyBatis会调用对象的setter方法,这对于初始化对象很有帮助,但基础类型不能设置为`null`。 22. **returnInstanceForEmptyRow**: 当返回行...
7. **callSettersOnNulls**:当此属性设置为`true`时,即使参数值为null,MyBatis也会调用Java对象的setter方法。这有助于保持对象状态的一致性,但也可能导致不必要的空值处理。 8. **defaultExecutorType**:此...
callSettersOnNulls:该配置控制的是 MyBatis 中是否在结果集中值为 null 的时候调用 setter 方法。默认值为 false。 MyBatis 中的 Setting 配置控制着 MyBatis 的多个方面的行为,合理地配置这些参数可以提高 ...
<setting name="callSettersOnNulls" value="true"/> ``` 在上面的配置中,我们指定了 MyBatis 的各种设置项,例如缓存、懒加载、类型别名等。 最后,我们需要在 ...
"callSettersOnNulls-test"显然是一个关于MyBatis配置特性的测试项目,主要关注的是如何处理输入参数为null时的情况。在MyBatis中,`callSettersOnNulls`是一个配置项,它影响了当输入参数为null时,MyBatis是否会...