读书人

初学ibatis报错!1!1!该怎么处理

发布时间: 2012-06-08 12:55:24 作者: rapoo

初学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


报如下异常:

Java code
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





SqlMapConfig.xml
XML code
<?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>



test.xml
XML code
<?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> 




SqlMapConfig.properties
XML code
driver=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:@192.168.77.176:1521:ruankousername=ruankoopenpassword=ruankoopen



FromSys.java
Java code
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;    }    }



Java code
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);    }


[解决办法]
请问下你的SqlMapConfig.properties是怎么加载的?

还有你的
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="$" />
<property name="JDBC.ConnectionURL" value="$" />
<property name="JDBC.Username" value="$" />
<property name="JDBC.Password" value="$" />

怎么数据源都是value="$"

用下面的配置试试
--------------------------------
XML code
<?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"
是否包括于你的项目中

读书人网 >J2EE开发

热点推荐