首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

下ibatis

2012-03-09 
求高手指教下ibatis!对象:Java codepublic class Person implements Serializable {private static final

求高手指教下ibatis!
对象:

Java code
public class Person implements Serializable {    private static final long serialVersionUID = 9006203036989086304L;    private Integer id;    private String pName;    private String sex;    private Integer age;//省略setter getter方法}

对象配置文件:
XML code
 <sqlMap namespace="Person"> <typeAlias alias="person" type="com.bean.Person"/>     <select id="getPerson" resultClass="person" parameterClass="java.lang.String">         <![CDATA[         select * from tab_person where id=#value#         ]]>     </select>     <insert id="insertPerson" parameterClass="person">         <![CDATA[         insert into tab_person(id,pname,sex,age) values(#id#,#pname#,#sex#,#age#)         ]]>     </insert>     <update id="updatePerson" parameterClass="person">         <![CDATA[         update tab_person set pname=#pname#,sex=#sex#,age=#age# where id=#id#         ]]>     </update>     <delete id="deletePerson" parameterClass="java.lang.String">         <![CDATA[         delete tab_person where id=#id#         ]]>     </delete> </sqlMap>

ibatis配置:
XML code
 <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="oracle.jdbc.driver.OracleDriver"/>             <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:orcl"/>             <property name="JDBC.Username" value="system"/>             <property name="JDBC.Password" value="oraclepass"/>         </dataSource>     </transactionManager>     <sqlMap resource="com/bean/Person.xml"/> </sqlMapConfig>

测试:
Java code
public static void main(String[] args){        try {            String resource="SqlMapConfigExample.xml";            Reader reader=Resources.getResourceAsReader(resource);            XmlSqlMapClientBuilder xmlSqlMapClientBuilder=new XmlSqlMapClientBuilder();            SqlMapClient sqlMapClient=xmlSqlMapClientBuilder.buildSqlMap(reader);            sqlMapClient.startTransaction();            Person person=new Person("gahd", "man", 21);            sqlMapClient.insert("insertPerson",person);            sqlMapClient.commitTransaction();        } catch (IOException e) {            e.printStackTrace();        }catch (Exception e) {            e.printStackTrace();        }    }

问题是他报这个错:
Exception in thread "main" java.lang.NoSuchMethodError: com.ibatis.sqlmap.engine.mapping.result.AutoResultMap: method <init>(Lcom/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate;)V not found
at com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.parseGeneralStatement(XmlSqlMapClientBuilder.java:623)


at com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.parseSelect(XmlSqlMapClientBuilder.java:506)
at com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.parseSqlMap(XmlSqlMapClientBuilder.java:474)
at com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.parseSqlMapRef(XmlSqlMapClientBuilder.java:457)
at com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.parseSqlMapConfig(XmlSqlMapClientBuilder.java:266)
at com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.buildSqlMap(XmlSqlMapClientBuilder.java:239)
at com.dao.AppSqlConfig.main(AppSqlConfig.java:19)

[解决办法]
你返回person时需要一个resultMap的设置,如:

XML code
    <resultMap class="TasksLogger" id="TasksLoggerList" groupBy="loginId">          <result property="loginId" column="login_id" />          <result property="taskNo" column="task_no" />          <result property="taskName" column="task_name" />          <result property="doType" column="type" />          <result property="resNo" column="res_no" />          <result property="applyTime" column="apply_time" />          <result property="startTime" column="start_time" />          <result property="endTime" column="end_time" />          <result property="letupTime" column="letup_time" />      </resultMap>
[解决办法]
select 方法中的 resultClass="person" 改为resultMap="personMap"
且personMap 需要定义 放在<sqlMap> </sqlMap> 定义如1楼

热点排行