ibatis入门问题
刚学ibatis,按照ibatis开发指南,写的一个简单测试代码,可是碰到很多问题;
包com.hengji.sql下有
SqlMapConfig.xml代码:
<?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><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="com.mysql.jdbc.Driver" /><property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:8080/sample" /><property name="JDBC.Username" value="root" /><property name="JDBC.Password" value="123456" /><property name="Pool.MaximumActiveConnections" value="10" /><property name="Pool.MaximumIdleConnections" value="5" /><property name="Pool.MaximumCheckoutTime" value="120000" /><property name="Pool.TimeToWait" value="500" /><property name="Pool.PingQuery" value="select 1 from ACCOUNT" /><property name="Pool.PingEnabled" value="false" /><property name="Pool.PingConnectionsOlderThan" value="1" /><property name="Pool.PingConnectionsNotUsedFor" value="1" /></dataSource></transactionManager><sqlMap resource="com/hengji/sql/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"><typeAlias alias="user" type="com.hengji.pojo.User" /><select id="getUser" parameterparameterparameterparametername="code"> package com.hengji.test;import java.io.IOException;import java.io.Reader;import java.sql.SQLException;//import com.ibatis.common.resources.Resources;import com.hengji.pojo.User;import com.ibatis.common.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;public class Test {public static void main(String[] args) {String resource ="com/hengji/sql/SqlMapConfig.xml";Reader reader;try {reader = Resources.getResourceAsReader(resource);//XmlSqlMapClientBuilder xmlBuilder = new XmlSqlMapClientBuilder(); SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);try {sqlMap.startTransaction();User user=new User();user.setName("test");user.setSex(new Integer(1));sqlMap.insert("insertUser", user);sqlMap.commitTransaction();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} }}错误如下:
com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in com/hengji/sql/User.xml. --- The error occurred while executing mapped statement. --- Check the insertUser. --- Check the statement or the result map. --- Cause: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketExceptionMESSAGE: java.net.ConnectException: Connection refused: connect<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" /> <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:8080/sample" /> <property name="JDBC.Username" value="root" /> <property name="JDBC.Password" value="123456" />
用以上信息测试数据库联接是否正常,确认你的mysql有没有sample数据库,确认建立的表是否在sample里面。 <?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><transactionManager type="JDBC"><dataSource type="SIMPLE"><property name="JDBC.Driver" value="com.mysql.jdbc.Driver" /><property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:8080/sample" /><property name="JDBC.Username" value="root" /><property name="JDBC.Password" value="123456" /></dataSource></transactionManager><sqlMap resource="com/hengji/sql/User.xml" /></sqlMapConfig> <?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><transactionManager type="JDBC"><dataSource type="SIMPLE"><property name="JDBC.Driver" value="com.mysql.jdbc.Driver" /><property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:8080/sample" /><property name="JDBC.Username" value="root" /><property name="JDBC.Password" value="123456" /></dataSource></transactionManager><sqlMap resource="com/hengji/sql/User.xml" /></sqlMapConfig> 我的意思是用DriverManager.getConnection方式连接试验下看有无问题,目的是先确认数据库联接是否有问题,如无问题则可确认与iBatis有关,不一定用iBatis出现问题就怀疑iBatis有什么问题!select 1 from ACCOUNT" />
这个SQL在你的数据库能跑通么?????????<property name="Pool.PingQuery" value="select 1 from ACCOUNT" />
不行,不过我换成下面的那种实现了,他还是报一样的错误,所以问题应该不止这个;应该还有其他的;
<?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><transactionManager type="JDBC"><dataSource type="SIMPLE"><property name="JDBC.Driver" value="com.mysql.jdbc.Driver" /><property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:8080/sample" /><property name="JDBC.Username" value="root" /><property name="JDBC.Password" value="123456" /></dataSource></transactionManager><sqlMap resource="com/hengji/sql/User.xml" /></sqlMapConfig>
我的mysql是5.0.3应该也没有问题;不知道,问题出在哪?<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:8080/sample" />
你的MySQL监听端口是8080?<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:8080/sample" />
你的MySQL监听端口是8080?
。。。。。3306 18 楼 ryan1982 2007-04-18 8080 TOMCAT XMLDB 19 楼 spiritfrog 2007-04-19 你的代码我在hsqldb上可以运行的,所以应该不是程序或者配置的问题。
应该就是你的端口号填错了。 20 楼 qingchen007 2007-07-24 谢谢,收藏