mybatis踩坑(一)

  1. 学习书目:mybatis从入门到精通 刘增辉

  2. eclipse 开启 xml、java 等相关文件的代码自动提示;否则因为拼写错误造成的报错不好找

  3. 报错信息
    org.apache.ibatis.exceptions.PersistenceException: Error building SqlSession.
    The error may exist in tk/mybatis/simple/mapper/CountryMapper.xml
    Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 6; 不允许有匹配 “[xX][mM][lL]” 的处理指令目标。
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:54)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:38)
    at tk.mybatis.simple.mapper.CountryMapperTest.init(CountryMapperTest.java:21)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.junit.runners.model.FrameworkMethod 1. r u n R e f l e c t i v e C a l l ( F r a m e w o r k M e t h o d . j a v a : 50 ) a t o r g . j u n i t . i n t e r n a l . r u n n e r s . m o d e l . R e f l e c t i v e C a l l a b l e . r u n ( R e f l e c t i v e C a l l a b l e . j a v a : 12 ) a t o r g . j u n i t . r u n n e r s . m o d e l . F r a m e w o r k M e t h o d . i n v o k e E x p l o s i v e l y ( F r a m e w o r k M e t h o d . j a v a : 47 ) a t o r g . j u n i t . i n t e r n a l . r u n n e r s . s t a t e m e n t s . R u n B e f o r e s . e v a l u a t e ( R u n B e f o r e s . j a v a : 24 ) a t o r g . j u n i t . r u n n e r s . P a r e n t R u n n e r . r u n ( P a r e n t R u n n e r . j a v a : 363 ) a t o r g . e c l i p s e . j d t . i n t e r n a l . j u n i t 4. r u n n e r . J U n i t 4 T e s t R e f e r e n c e . r u n ( J U n i t 4 T e s t R e f e r e n c e . j a v a : 89 ) a t o r g . e c l i p s e . j d t . i n t e r n a l . j u n i t . r u n n e r . T e s t E x e c u t i o n . r u n ( T e s t E x e c u t i o n . j a v a : 41 ) a t o r g . e c l i p s e . j d t . i n t e r n a l . j u n i t . r u n n e r . R e m o t e T e s t R u n n e r . r u n T e s t s ( R e m o t e T e s t R u n n e r . j a v a : 541 ) a t o r g . e c l i p s e . j d t . i n t e r n a l . j u n i t . r u n n e r . R e m o t e T e s t R u n n e r . r u n T e s t s ( R e m o t e T e s t R u n n e r . j a v a : 763 ) a t o r g . e c l i p s e . j d t . i n t e r n a l . j u n i t . r u n n e r . R e m o t e T e s t R u n n e r . r u n ( R e m o t e T e s t R u n n e r . j a v a : 463 ) a t o r g . e c l i p s e . j d t . i n t e r n a l . j u n i t . r u n n e r . R e m o t e T e s t R u n n e r . m a i n ( R e m o t e T e s t R u n n e r . j a v a : 209 ) C a u s e d b y : o r g . a p a c h e . i b a t i s . b u i l d e r . B u i l d e r E x c e p t i o n : E r r o r p a r s i n g S Q L M a p p e r C o n f i g u r a t i o n . C a u s e : o r g . a p a c h e . i b a t i s . b u i l d e r . B u i l d e r E x c e p t i o n : E r r o r c r e a t i n g d o c u m e n t i n s t a n c e . C a u s e : o r g . x m l . s a x . S A X P a r s e E x c e p t i o n ; l i n e N u m b e r : 2 ; c o l u m n N u m b e r : 6 ; 不 允 许 有 匹 配 " [ x X ] [ m M ] [ l L ] " 的 处 理 指 令 目 标 。 a t o r g . a p a c h e . i b a t i s . b u i l d e r . x m l . X M L C o n f i g B u i l d e r . p a r s e C o n f i g u r a t i o n ( X M L C o n f i g B u i l d e r . j a v a : 115 ) a t o r g . a p a c h e . i b a t i s . b u i l d e r . x m l . X M L C o n f i g B u i l d e r . p a r s e ( X M L C o n f i g B u i l d e r . j a v a : 95 ) a t o r g . a p a c h e . i b a t i s . s e s s i o n . S q l S e s s i o n F a c t o r y B u i l d e r . b u i l d ( S q l S e s s i o n F a c t o r y B u i l d e r . j a v a : 52 ) . . . 17 m o r e C a u s e d b y : o r g . a p a c h e . i b a t i s . b u i l d e r . B u i l d e r E x c e p t i o n : E r r o r c r e a t i n g d o c u m e n t i n s t a n c e . C a u s e : o r g . x m l . s a x . S A X P a r s e E x c e p t i o n ; l i n e N u m b e r : 2 ; c o l u m n N u m b e r : 6 ; 不 允 许 有 匹 配 " [ x X ] [ m M ] [ l L ] " 的 处 理 指 令 目 标 。 a t o r g . a p a c h e . i b a t i s . p a r s i n g . X P a t h P a r s e r . c r e a t e D o c u m e n t ( X P a t h P a r s e r . j a v a : 259 ) a t o r g . a p a c h e . i b a t i s . p a r s i n g . X P a t h P a r s e r . < i n i t > ( X P a t h P a r s e r . j a v a : 125 ) a t o r g . a p a c h e . i b a t i s . b u i l d e r . x m l . X M L M a p p e r B u i l d e r . < i n i t > ( X M L M a p p e r B u i l d e r . j a v a : 78 ) j a t o r g . a p a c h e . i b a t i s . b u i l d e r . x m l . X M L C o n f i g B u i l d e r . m a p p e r E l e m e n t ( X M L C o n f i g B u i l d e r . j a v a : 339 ) a t o r g . a p a c h e . i b a t i s . b u i l d e r . x m l . X M L C o n f i g B u i l d e r . p a r s e C o n f i g u r a t i o n ( X M L C o n f i g B u i l d e r . j a v a : 113 ) . . . 19 m o r e C a u s e d b y : o r g . x m l . s a x . S A X P a r s e E x c e p t i o n ; l i n e N u m b e r : 2 ; c o l u m n N u m b e r : 6 ; 不 允 许 有 匹 配 " [ x X ] [ m M ] [ l L ] " 的 处 理 指 令 目 标 。 a t c o m . s u n . o r g . a p a c h e . x e r c e s . i n t e r n a l . u t i l . E r r o r H a n d l e r W r a p p e r . c r e a t e S A X P a r s e E x c e p t i o n ( E r r o r H a n d l e r W r a p p e r . j a v a : 203 ) a t c o m . s u n . o r g . a p a c h e . x e r c e s . i n t e r n a l . u t i l . E r r o r H a n d l e r W r a p p e r . f a t a l E r r o r ( E r r o r H a n d l e r W r a p p e r . j a v a : 177 ) a t c o m . s u n . o r g . a p a c h e . x e r c e s . i n t e r n a l . i m p l . X M L E r r o r R e p o r t e r . r e p o r t E r r o r ( X M L E r r o r R e p o r t e r . j a v a : 441 ) a t c o m . s u n . o r g . a p a c h e . x e r c e s . i n t e r n a l . i m p l . X M L E r r o r R e p o r t e r . r e p o r t E r r o r ( X M L E r r o r R e p o r t e r . j a v a : 368 ) a t c o m . s u n . o r g . a p a c h e . x e r c e s . i n t e r n a l . i m p l . X M L S c a n n e r . r e p o r t F a t a l E r r o r ( X M L S c a n n e r . j a v a : 1436 ) a t c o m . s u n . o r g . a p a c h e . x e r c e s . i n t e r n a l . i m p l . X M L S c a n n e r . s c a n P I D a t a ( X M L S c a n n e r . j a v a : 723 ) a t c o m . s u n . o r g . a p a c h e . x e r c e s . i n t e r n a l . i m p l . X M L D o c u m e n t F r a g m e n t S c a n n e r I m p l . s c a n P I D a t a ( X M L D o c u m e n t F r a g m e n t S c a n n e r I m p l . j a v a : 1018 ) a t c o m . s u n . o r g . a p a c h e . x e r c e s . i n t e r n a l . i m p l . X M L S c a n n e r . s c a n P I ( X M L S c a n n e r . j a v a : 691 ) a t c o m . s u n . o r g . a p a c h e . x e r c e s . i n t e r n a l . i m p l . X M L D o c u m e n t S c a n n e r I m p l 1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209) Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 6; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标。 at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:115) at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:95) at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:52) ... 17 more Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 6; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标。 at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:259) at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:125) at org.apache.ibatis.builder.xml.XMLMapperBuilder.<init>(XMLMapperBuilder.java:78)j at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:339) at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:113) ... 19 more Caused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 6; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标。 at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436) at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPIData(XMLScanner.java:723) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanPIData(XMLDocumentFragmentScannerImpl.java:1018) at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPI(XMLScanner.java:691) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl 1.runReflectiveCall(FrameworkMethod.java:50)atorg.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)atorg.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)atorg.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)atorg.junit.runners.ParentRunner.run(ParentRunner.java:363)atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)Causedby:org.apache.ibatis.builder.BuilderException:ErrorparsingSQLMapperConfiguration.Cause:org.apache.ibatis.builder.BuilderException:Errorcreatingdocumentinstance.Cause:org.xml.sax.SAXParseException;lineNumber:2;columnNumber:6;"[xX][mM][lL]"atorg.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:115)atorg.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:95)atorg.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:52)...17moreCausedby:org.apache.ibatis.builder.BuilderException:Errorcreatingdocumentinstance.Cause:org.xml.sax.SAXParseException;lineNumber:2;columnNumber:6;"[xX][mM][lL]"atorg.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:259)atorg.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:125)atorg.apache.ibatis.builder.xml.XMLMapperBuilder.<init>(XMLMapperBuilder.java:78)jatorg.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:339)atorg.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:113)...19moreCausedby:org.xml.sax.SAXParseException;lineNumber:2;columnNumber:6;"[xX][mM][lL]"atcom.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)atcom.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)atcom.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)atcom.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)atcom.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)atcom.sun.org.apache.xerces.internal.impl.XMLScanner.scanPIData(XMLScanner.java:723)atcom.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanPIData(XMLDocumentFragmentScannerImpl.java:1018)atcom.sun.org.apache.xerces.internal.impl.XMLScanner.scanPI(XMLScanner.java:691)atcom.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImplPrologDriver.next(XMLDocumentScannerImpl.java:912)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)
    at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:257)
    … 23 more

    原因:mapper.xml 不是从第一行开始的
    在这里插入图片描述
    修改后:
    在这里插入图片描述

  4. mysql数据库连不上
    解决:如果mysql版本为5.*,则连接url应如下

<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false/>
  1. mysql 还是连不上,查询得知本机MySQL版本为8.0.21(mysql 版本查询命令:select VERSION()),maven中引入的版本太低。
    解决:修改依赖的mysql相关的包。同时xml中相关的项应该改为:
    在这里插入图片描述
    经测试这里URL不需要“useSSL=false”
    坑:&要改为 “&amp”;否则报错
  2. 当MySQL相关的包改为8.*后,依赖的jdk版本应该改为1.8,否则报错。
    更改内容:
    第一:
    在这里插入图片描述

记得:右键pom->maven->update project

第二:将环境变量改为1.8(本机上装了1.6和1.8)
第三:在这里插入图片描述
7. 如果控制台没有运行结果,也没有报错信息,则打印异常信息:

try{
}
catch (Exception e) {
	// TODO: handle exception
	e.printStackTrace();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值