问题描述
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@localhost:1521:yssf</value> </property> <property name="username"> <value>sa</value> </property> <property name="password"> <value>sa</value> </property> </bean><bean id="sqlMapClient" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="dataSource"> <ref bean="ds"/> </property> <property name="configLocation"> <value>WEB-INF/sql-map-config.xml</value> </property> </bean>报错如下:javax.servlet.ServletException: Error creating bean with name 'sqlMapClient' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'dataSource' of bean class [org.springframework.jdbc.datasource.DriverManagerDataSource]: Bean property 'dataSource' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)javax.servlet.http.HttpServlet.service(HttpServlet.java:743)javax.servlet.http.HttpServlet.service(HttpServlet.java:856)期待高手解决下。问题补充:还是不行啊,Error parsing XML. Cause: org.xml.sax.SAXParseException: Document root element "sqlMapConfig", must match DOCTYPE root "null".问题补充:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN""http://www.ibatis.com/dtd/sql-map-config-2.dtd"><sqlMapConfig><sqlMap resource="vo/User.xml"/></sqlMapConfig>User.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"><sqlMap namespace="User"><resultMap id="result" class="vo.User"><result property="id" column="id" /> <result property="name" column="username" /><result property="password" column="password" /></resultMap><statement id="getUserByName" resultMap="result">select * from user where username=#name#</statement></sqlMap>
解决方案
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN""http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">也就是把www.ibatis.com 改成ibatis.apache.org 你试试看
解决方案二:
引用还是不行啊,Error parsing XML. Cause: org.xml.sax.SAXParseException: Document root element "sqlMapConfig", must match DOCTYPE root "null". 你的sqlmapconfig.xml文件格式不对,这个是在解析sqlmapconfig.xml文件时抛的错, 你可以贴你的sqlmapconfig.xml的内容.
解决方案三:
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
解决方案四:
<bean id="sqlMapClient" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 不太对吧...
解决方案五:
<property name="configLocation"> <value>classpath:/sql-map-config.xml</value> </property>