文档章节

MyBatis与Spring设置callSettersOnNulls

刘霖晋
 刘霖晋
发布于 2016/04/19 15:05
字数 557
阅读 27
收藏 0
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE configuration   
  3.     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"   
  4.     "http://mybatis.org/dtd/mybatis-3-config.dtd">   
  5.   
  6. <!--  
  7.     如果内网机器报错,请使用下面这种笨办法 
  8.  -->  
  9. <!--   
  10. <!DOCTYPE configuration  
  11.         PUBLIC "-//www.mybatis.org//DTD Config 3.0//EN"  
  12.         "E:/bao/tomcat/apache-tomcat-6.0.14/webapps/pmsys/WEB-INF/classes/mybatis/mybatis-3-config.dtd">  
  13.  -->  
  14.   
  15. <configuration>  
  16.     <settings>  
  17.       <!-- 只设置需要的,其他使用默认值 -->  
  18.       <!-- 开启缓存,默认就是开启的,2层开关,需要在Mapper文件中也指定 cache 标签才会真正使用缓存 -->  
  19.       <setting name="cacheEnabled" value="true"/>  
  20.       <!-- 在null时也调用 setter,适应于返回Map,3.2版本以上可用 -->  
  21.         <setting name="callSettersOnNulls" value="true"/>  
  22.     </settings>  
  23. </configuration>  



然后使用,一切正常,OK.
过了几天, 实施项目时出BUG了, 因为是企业内网服务器,不能访问 mybatis.org,于是启动出错.
【Mybatis 这个渣渣,在启动时会去获取并校验DTD,目前还不知道在哪里配置让其不进行校验.】
网上搜索半天,没有好的解决办法, 看到有方法说将dtd下载到本地,然后直接指定路径,就像上面注释掉的那部分一样。

  1. <!-- myBatis配置 -->  
  2. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  3.     <property name="dataSource" ref="dataSource" />  
  4.       
  5.     <!-- 表示在mybatis.mapping包或以下所有目录中,以 Mapper.xml结尾所有文件 -->  
  6.     <property name="mapperLocations">  
  7.         <value>classpath:com/cncounter/dao/oracle/**/*Mapper.xml</value>  
  8.         <!--   
  9.         <list>  
  10.             <value>classpath:com/cncounter/dao/oracle/res/*Mapper.xml</value>  
  11.             <value>classpath:com/cncounter/dao/oracle/user/*Mapper.xml</value>  
  12.         </list>  
  13.          -->  
  14.     </property>  
  15.     <!--   
  16.     <property name="configLocation">  
  17.         <value>classpath:mybatis/mybatis-env-setting.xml</value>  
  18.     </property>  
  19.      -->  
  20.     <!--  切换一种方式,不配置configLocation  -->  
  21.     <property name="configurationProperties">  
  22.         <props>  
  23.             <prop key="cacheEnabled">true</prop>  
  24.             <prop key="callSettersOnNulls">true</prop>  
  25.         </props>  
  26.     </property>  
  27. </bean>  

还是不起作用,于是没法子了,只好拆开Mybatis的源码,找到类 org.apache.ibatis.session.Configuration ,然后,在自己的目录下把源码拷出来, 自己在test目录建一个包,建一个类,和Configuration一模一样,然后修改 callSettersOnNulls 的默认值为 true,然后找到编译好的3个class文件(有内部类),替换到mybatis-3.2.7.jar中去,OK,成功解决。

按理说应该是编译整个mybatis的,但是maven有点坑,目前还不想这样做


© 著作权归作者所有

共有 人打赏支持
刘霖晋
粉丝 1
博文 7
码字总数 916
作品 0
成都
程序员
私信 提问
spring springmvc mybatis maven 项目整合示例-导航页面

spring原理 实践解析-简单的helloworld spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包 spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途...

noteless
2018/06/29
0
0
Mybatis Spring Boot 1.0.0 正式发布

Mybatis Spring Boot 1.0.0 正式发布,详细信息请查看发行页面: https://github.com/mybatis/mybatis-spring-boot/releases 下载地址如下: Source code (zip) Source code (tar.gz) Mybat......

淡漠悠然
2015/11/19
9.2K
15
springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml

noteless
2016/02/24
0
0
springmvc 项目完整示例03 小结

利用spring 创建一个web项目 大致原理 利用spring的ioc 原理,例子中也就是体现在了配置文件中 设置了自动扫描注解 配置了数据库信息等 一般一个项目,主要有domain,dao,service,controller这几...

noteless
2016/02/24
0
0
spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包

下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the Modules section of the reference documentation. Their ......

noteless
2016/02/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IDE 插件新版本发布,开发效率 “biu” 起来了

近日,Cloud Toolkit正式推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件,本文挑选了其中三个重大特性进行解读,点击文末官网跳转链接,可查看详细的版本说明。 本地应用一键部署到任何...

阿里云官方博客
15分钟前
1
0
我是怎样和Linux系统结缘并通过红帽RHCE认证的

我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#、C++之类的...

linuxprobe16
16分钟前
0
0
Coding and Paper Letter(四十四)

资源整理。 1 Coding: 1.Rstudio2019年会“机器学习应用”的幻灯片,代码和数据 rstudio conf 2019 2.R语言包sparkxgb,Spark上XGBoost的R接口。 sparkxgb 3.自动SQL注入和数据库接管工具。 ...

胖胖雕
48分钟前
3
0
Ubuntu最新的主要操作系统放弃32位支持?

现在是2018年,2019年即将到来——64位处理器已经成为主流很长一段时间了。如果你仍然使用32位的电脑,那么是时候把它扔进垃圾箱了。 我为所有基于Linux的操作系统维护者感到自豪,他们有勇气...

Linux就该这么学
49分钟前
1
0
Fundebug发布Vue插件,简化BUG监控接入代码

摘要: 代码越短越好! 我们发布了fundebug-vue插件,可以简化Vue框架接入Fundebug的代码。 Vue如何接入Fundebug 1. 安装fundebug-javascript与fundebug-vue npm install fundebug-javascrip...

Fundebug
57分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部