李成笔记网

专注域名、站长SEO知识分享与实战技巧

Mybatis的两个全局配置(mybatis的全局配置文件名和映射文件名)

好记性,不如烂笔头。

今天翻看项目代码,看到mybatis的callSettersOnNulls和jdbcTypeForNull两个全局配置,于是尝试了一番。

一.callSettersOnNulls配置

1.用途:解决查询结果返回有map时,其值为空,key不显示的问题

2.mysql查询演示

  • mysql数据库数据

测试数据

  • 配置callSettersOnNulls运行结果如图
值为null的字段,查询结果【显示】

mysql-配置callSettersOnNulls

  • 不配置callSettersOnNulls运行结果如图
值为null的字段,查询结果【不显示】

mysql-不配置callSettersOnNulls

3.oracle查询演示

  • oracle测试数据

oracle测试数据

    • 配置callSettersOnNulls运行结果如图
值为null的字段,查询结果【显示】

oracle-配置callSettersOnNulls

  • 不配置callSettersOnNulls运行结果如图
值为null的字段,查询结果【不显示】

oracle-不配置callSettersOnNulls

4 结论

此配置项适用于oracle和mysql

二.jdbcTypeForNull配置

1.用途:操作Oracle:当传入参数含null,也能够将其转成合适的数据类型

2.mysql数据保存演示

  • 配置jdbcTypeForNull 和不配置jdbcTypeForNull

mysql-不配置jdbcTypeForNull


mysql-配置jdbcTypeForNull

3.oracle数据保存演示

    • 不配置jdbcTypeForNull

oracle-不配置jdbcTypeForNull-报错


    • 配置jdbcTypeForNull


oracle-配置jdbcTypeForNull-正常保存

4.结论


jdbcTypeForNull的配置在mysql数据库中,如果入参为null,无论配不配置不影响使用;

在oracle数据库中,如果入参为null,会提示类型异常,这是因为在操作oracle数据库时,当入参为null时,jdbcType的默认类型为OTHER,mybatis不能有效识别,所以在操作oracle时,非常有必要配置上。

因此为了系统的兼容性最好将此配置配置上。

当然也可以在mapper中指明数据类型如下(但这样写太麻烦,不推荐):

#{属性参数,jdbcType=VARCHAR}或其他jdbctype类型

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言