ibatis sqlmap文件中文注释注意事项
2010-01-11 21:01
399 查看
ibatis sqlmap文件中文注释注意事项
今天,在jdk6下,启动以前发布在tomcat6下的一个应用,居然报错,错误信息如下所示。大概意思就是sqlmap配置文件,注释格式不对。但是这个应用在jdk1.5,tomcat6下是在正常运行的,所以非常困惑。
google了下,发现层碰到此类的问题的网友还不在少数,网上比较一致的说法是因为sqlmap文件中有中文注释导致。例如,我们在sqlmap文件中,每新增一个select,update等节点时要求至少写两个注释:
1) 该节点是何时被修改的,被谁修改等信息;
2) 该节点的用途描述;
为此看来在sqlmap文件中写中文注释是在所难免的,这里要提醒大家的是在sqlmap文件中写中文注释时切记按如下格式下:
<!-- 此处添加该节点是何时被修改的,被谁修改信息 -->
请注意两侧红色区域与中间蓝色内容间的空格,注释标记<!-- -->与注释内容间必须留有空格,如下表所示,至于在jdk6下,为什么一定要如此,因为没看ibatis解析xml文件的代码,还说不上来。
今天,在jdk6下,启动以前发布在tomcat6下的一个应用,居然报错,错误信息如下所示。大概意思就是sqlmap配置文件,注释格式不对。但是这个应用在jdk1.5,tomcat6下是在正常运行的,所以非常困惑。
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlMapClient' defined in class path resource [conf/data-source.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: org.xml.sax.SAXParseException: The string "--" is not permitted within comments. Caused by: java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: org.xml.sax.SAXParseException: The string "--" is not permitted within comments. at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:89) at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63) at org.springframework.orm.ibatis.SqlMapClientFactoryBean.afterPropertiesSet(SqlMapClientFactoryBean.java:255) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1057) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1024) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:421) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:140) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:270) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346) at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) ... java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: org.xml.sax.SAXParseException: The string "--" is not permitted within comments. at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53) at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:86) ... 39 more Caused by: org.xml.sax.SAXParseException: The string "--" is not permitted within comments. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388) at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1411) at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanComment(XMLScanner.java:774) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanComment(XMLDocumentFragmentScannerImpl.java:1034) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:225) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283) at com.ibatis.common.xml.NodeletParser.createDocument(NodeletParser.java:157) at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:50) |
1) 该节点是何时被修改的,被谁修改等信息;
2) 该节点的用途描述;
为此看来在sqlmap文件中写中文注释是在所难免的,这里要提醒大家的是在sqlmap文件中写中文注释时切记按如下格式下:
<!-- 此处添加该节点是何时被修改的,被谁修改信息 -->
请注意两侧红色区域与中间蓝色内容间的空格,注释标记<!-- -->与注释内容间必须留有空格,如下表所示,至于在jdk6下,为什么一定要如此,因为没看ibatis解析xml文件的代码,还说不上来。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" > <sqlMap namespace="application"> <!-- 此处添加该节点是何时被修改的,被谁修改信息 --> <!-- 此处添加该节点功能描述(如:获取应用程序列表信息) --> <select id="getApplications" parameterClass="Map" resultClass="HashMap"> select * from applicationinfo where module = #module# <isNotEmpty prepend="and" property="application"> application = #application# </isNotEmpty> <isNotEmpty prepend="and" property="isvalid"> isvalid = #isvalid# </isNotEmpty> </select> <sqlMap/> |
相关文章推荐
- ibatis中使用sqlMap元素把配置写到多个文件中的时候一个注意点,运行无错误,junit报错.
- FATFS文件系统的中文长文件名配置的几个注意事项
- MFC文件类CStdioFile读写中文文件的注意事项
- ibatis学习(5)sqlMap注意事项
- HttpServletResponse response(中文乱码、文件下载、定时刷新、控制缓存、重定向、注意事项)
- ibatis实现一对一关联查询中映射文件的注意事项
- HttpServletResponse response(中文乱码、文件下载、定时刷新、控制缓存、重定向、注意事项)
- MFC文件类CStdioFile读写中文文件的注意事项
- ibatis - sqlMapConfig.xml配置文件详解
- 编写 hpp文件注意事项
- Spring MVC 关于中文显示异常的注意事项
- linux安装node js的二进制文件安装方式的注意事项
- 将WAV文件做到EXE文件的方法及注意事项
- Android5.0以上Webview上传文件注意事项
- delphi的tclientdataset的中文过滤使用注意事项
- 头文件注意事项
- Nginx配置文件中文注释详解
- 包含有函数实现的.h文件注意事项
- php中文件上传的几个注意事项
- strust2上传文件的注意事项