`
flyeagle
  • 浏览: 211974 次
  • 来自: ...
社区版块
存档分类
最新评论

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" parameterClass="java.lang.String"
		resultClass="user">
		<![CDATA[ 
                select 
                  name, 
                 sex 
                from t_user
             where name = #name# 
                 ]]>
	</select>

	<update id="updateUser" parameterClass="user">
		<![CDATA[ 
                UPDATE t_user 
                     SET 
                         name=#name#, 
                         sex=#sex# 
                WHERE id = #id# 
                 ]]>
	</update>

	<insert id="insertUser" parameterClass="user">
		INSERT INTO t_user (
		name,
		sex)
		VALUES (
		#name#,
		#sex#
		)
	</insert>
	<delete id="deleteUser" parameterClass="java.lang.String">
		delete from t_user
		where id = #value#
	</delete>
</sqlMap>


   测试类:就执行一个简单的插入操作:
   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 block
				e.printStackTrace();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.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.SocketException
MESSAGE: java.net.ConnectException: Connection refused: connect
分享到:
评论
20 楼 qingchen007 2007-07-24  
谢谢,收藏
19 楼 spiritfrog 2007-04-19  
你的代码我在hsqldb上可以运行的,所以应该不是程序或者配置的问题。
应该就是你的端口号填错了。
18 楼 ryan1982 2007-04-18  
8080 TOMCAT XMLDB
17 楼 hermitte 2007-02-05  
MagicYang 写道
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:8080/sample" />

你的MySQL监听端口是8080?

。。。。。3306
16 楼 flyeagle 2007-02-03  
暂时,就看一下他的基本实现方式:增,删,改,查,好像没发现什么问题,而且他不一定就用那个DTD
,我用的是ibatis2.x的包,所以他用的可能会是包里面的DTD
15 楼 tangyuanjian2007 2007-02-03  
顺便说一下 最上面DTD的路径已经变掉了,如果没改有什么影响了 ?
14 楼 flyeagle 2007-02-02  
  不好意思!就是端口问题,由于刚学ibatis,而连接字符串,这种最基本的东西,想来不会出错,所以没有仔细检查,因为是ibatis的问题;实在不好意思! 非常感谢大家的指点;
13 楼 MagicYang 2007-02-02  
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:8080/sample" />

你的MySQL监听端口是8080?
12 楼 ddandyy 2007-02-02  
顺便说一下 最上面DTD的路径已经变掉了  你可以去http://ibatis.apache.org/看看  

当然  你现在的问题应该不是这个原因
11 楼 ddandyy 2007-02-02  
jdbc:mysql://localhost:8080/sample

数据库端口8080?

你确认你的8080端口没有被别的东西占用么

这不是一个好习惯
10 楼 flyeagle 2007-02-02  
<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应该也没有问题;不知道,问题出在哪?
9 楼 ddandyy 2007-02-02  
引用
<property name="Pool.PingQuery" value="select 1 from ACCOUNT" /> 



这个SQL在你的数据库能跑通么?????????
8 楼 flyeagle 2007-02-02  
谢谢! 我已经侧过了,直接用jdbc连事没有问题的,可以把数据插到数据库里面的,所以,这个问题,应该还是ibatis配置文件的问题,或者就是我写的测试方法有问题;
7 楼 jamesby 2007-02-02  
flyeagle 写道
有sample数据库,有表t_user,改成如下,还是一样的问题:
   <?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有什么问题!
6 楼 flyeagle 2007-02-02  
有sample数据库,有表t_user,改成如下,还是一样的问题:
   <?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>
 
5 楼 jamesby 2007-02-02  
            <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里面。
4 楼 flyeagle 2007-02-02  
  没问题,数据库驱动有,连接字符串也没有问题,用户名,密码都没有问题,应该还是ibatis配置文件或者是User.xml文件有问题;
3 楼 deafwolf 2007-02-02  
直接写JDBC连数据库试试
2 楼 flyeagle 2007-02-02  
  mysql是启动的,你说的手动连是指什么?不太明白,请指点一下,谢谢!
1 楼 deafwolf 2007-02-02  
如果mysql启动了,那么楼主试试手工连数据库

相关推荐

Global site tag (gtag.js) - Google Analytics