配置SSM环境踩坑记录--2018.5.12

配置好applicationContext.xml和web.xml和pom.xml之后,弄一个测试类测试一下,然后出现了如同此链接的错误,也就是

    Error creating bean with name 'sqlSessionFactory' defined in ServletContext resource 

balabala的一大堆,然后根据作者所说的把  注释的中文和注释符号"-->"隔开一个空格,这个问题就没了

然后出现了下一个问题

    org.xml.sax.SAXParseException; lineNumber: 16; columnNumber: 45; schema_reference.4: 无法读取方案文档 'http://www.springframework.org/schema/context/spring-context-4.3.xsd', 原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:schema>

再上网找答案,此链接说是

main方法中使用spring,出现此错误,原因可能是没联网,也有可能是spring的配置文件中头部信息的版本与实际使用的spring jar版本不符,也有人说是因为spring配置文件中引入的命名空间无效,去掉无效的命名空间就OK了

然后我把那行注释掉


这个问题不见了,但是又出现了其他问题如下

    1.java.lang.IllegalStateException: Failed to load ApplicationContext

    2.org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 18 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 18; columnNumber: 45; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明。

第一个问题很奇怪,明明刚刚都没有了现在又出现了。第二个应该可能是版本的原因,因为我的项目一开始是复制的别人的配置文件没有注意整个项目的版本信息,还有一种就是在引入命名空间的时候没有引入它的DTD文件。然后我把刚刚注释掉的Content的放上去去掉了版本号,很好,这个问题又没了,然后又出现了如下问题(晕):

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UserService': Injection of autowired dependencies failed; 

    nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private mapper.UserMapper service.impl.UserServiceImpl.userMapper;

然后找啊找把UserServiceImpl里的引入其他的bean注释成了@Resource然后开始提示我

    1.org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; 

    2.nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [xxx\JAVA WEB\petstore\target\classes\mapper\UserMapper.xml]'; 

    3.nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for mapper.UserMapper.BaseResultMap

这里说的是调用初始化函数失败,解析mapper.xml文档失败,失败的原因是因为result map里已经有了那个baseResultMap的value了,那应该就不是配置问题了,是程序问题,接下来再开始找原因。

在网上找到了原因,说是Mybatis-Generator在生成Mapper.xml文件时,会在原来基础上再生成,导致内容重复。可能之前逆向生成POJO和MAPPER的时候生成了两份导致有这个问题,参考网上的做法,把BaseResultMap改了一个名字,好的,这个问题解决了,然后又出现了下一个问题:

    java.lang.IllegalArgumentException: XML fragments parsed from previous mappers already contains value for mapper.UserMapper.Update_By_Example_Where_Clause 

然后又去网上找,有人说是是xml文件映射的方法名重复的问题,或者参数类型和返回值类型的问题,我找了一下我的映射的xml文件,果然有重复的id,删掉就好了,这个应该是自动生成的问题,等我下午再看看。

仔细检查了一下UserMapper.xml文件发现还真的有重复定义的BaseResultMap和其他的sql的id重复,把下面重复的定义和方法删除,再在jdbc的链接那里加上&serverTimezone=UTC

jdbc.jdbcUrl=jdbc:mysql://localhost:3306/petstore?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

 测试就通过啦~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值