初学ibatis报错!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1!!!!!!!!!!!!!1!!!!!!!!!!!!!
网上说是sqlmapconfig.xml配错了,我看了半天还是报错。还有common-loggin没导入,我导了还是报错。
这些文件都放在src中,
导入包mybatis-3.1.1.jar
ibatis-common-1.3.1.jar
ibatis-dao-1.3.1.jar
ibatis-sqlmap-2.3.0.jar
ojdbc14.jar
报如下异常:
Exception in thread "main" java.lang.ExceptionInInitializerError at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.<init>(SqlMapConfigParser.java:58) at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.<init>(SqlMapConfigParser.java:45) at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63) at test.main(test.java:29)Caused by: java.lang.RuntimeException: Error creating logger for class class com.ibatis.sqlmap.engine.impl.SqlMapClientImpl. Cause: java.lang.NullPointerException at com.ibatis.common.logging.LogFactory.getLog(LogFactory.java:33) at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.<clinit>(SqlMapClientImpl.java:40) ... 4 moreCaused by: java.lang.NullPointerException at com.ibatis.common.logging.LogFactory.getLog(LogFactory.java:31) ... 5 more
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfigPUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN""http://www.ibatis.com/dtd/sql-map-config-2.dtd"><sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="$" /> <property name="JDBC.ConnectionURL" value="$" /> <property name="JDBC.Username" value="$" /> <property name="JDBC.Password" value="$" /> <property name="JDBC.DefaultAutoCommit" value="true" /> <property name="Pool.MaximumActiveConnections" value="10" /> <property name="Pool.MaximumIdleConnections" value="5" /> <property name="Pool.MaximumCheckoutTime" value="180000" /> <property name="Pool.TimeToWait" value="10000" /> <property name="Pool.PingQuery" value="select 1 from dual" /> <property name="Pool.PingEnabled" value="true" /> <property name="Pool.PingConnectionsOlderThan" value="0" /> <property name="Pool.PingConnectionsNotUsedFor" value="3600000" /> <property name="Pool.QuietMode" value="true" /> </dataSource> </transactionManager> <sqlMap resource="test.xml" /></sqlMapConfig>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapPUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN""http://www.ibatis.com/dtd/sql-map-2.dtd"><sqlMap namespace="test"> <typeAlias alias="fromSys" type="FromSys" /> <resultMap id="get-fromSys-result" class="fromSys"> <result property="sysId" column="sys_id" /> <result property="name" column="name" /> </resultMap> <select id="getFromSys" parameterClass="String" resultMap="get-fromSys-result"> select * from from_sys WHERE name=#value# </select> </sqlMap>
driver=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:@192.168.77.176:1521:ruankousername=ruankoopenpassword=ruankoopen
import java.io.Serializable;public class FromSys implements Serializable{ private static final long serialVersionUID = 1L; private Long sysId; private String name; public Long getSysId() { return sysId; } public void setSysId(Long sysId) { this.sysId = sysId; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
public static void main(String args[]) throws Exception {// FromSys student = getFromSys(); String resource = "SqlMapConfig.xml"; Reader reader = Resources.getResourceAsReader(resource); SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); }
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfigPUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN""http://www.ibatis.com/dtd/sql-map-config-2.dtd"><sqlMapConfig> <properties resource="SqlMapConfig.properties" /> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"><!-- 下面的value="$"类推 --> <property name="JDBC.Driver" value="${driver}" /> <property name="JDBC.ConnectionURL" value="$" /> <property name="JDBC.Username" value="$" /> <property name="JDBC.Password" value="$" /> <property name="JDBC.DefaultAutoCommit" value="true" /> <property name="Pool.MaximumActiveConnections" value="10" /> <property name="Pool.MaximumIdleConnections" value="5" /> <property name="Pool.MaximumCheckoutTime" value="180000" /> <property name="Pool.TimeToWait" value="10000" /> <property name="Pool.PingQuery" value="select 1 from dual" /> <property name="Pool.PingEnabled" value="true" /> <property name="Pool.PingConnectionsOlderThan" value="0" /> <property name="Pool.PingConnectionsNotUsedFor" value="3600000" /> <property name="Pool.QuietMode" value="true" /> </dataSource> </transactionManager> <sqlMap resource="test.xml" /></sqlMapConfig>
[解决办法]
导入包
mybatis-3.1.1.jar
ibatis-common-1.3.1.jar
ibatis-dao-1.3.1.jar
ibatis-sqlmap-2.3.0.jar
ojdbc14.jar
你使用的是mybatis还是ibatis2,这俩个区别很大,mybatis的核心是SqlSessionFactory,而ibatis2是SqlMapClient,看你使用是ibatis2但你的为嘛导入包mybatis-3.1.1.jar
[解决办法]
楼主写的比较凌乱mybatis是ibatis的升级版,你怎么一起在用了
初步看了下是缺少包造成的请检查下
"org.apache.log4j.Logger", "com.ibatis.common.logging.log4j.Log4jImpl"
是否包括于你的项目中