论坛首页 入门技术论坛

ibatis入门问题

浏览 12917 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-02-02  
刚学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
   发表时间:2007-02-02  
如果mysql启动了,那么楼主试试手工连数据库
0 请登录后投票
   发表时间:2007-02-02  
  mysql是启动的,你说的手动连是指什么?不太明白,请指点一下,谢谢!
0 请登录后投票
   发表时间:2007-02-02  
直接写JDBC连数据库试试
0 请登录后投票
   发表时间:2007-02-02  
  没问题,数据库驱动有,连接字符串也没有问题,用户名,密码都没有问题,应该还是ibatis配置文件或者是User.xml文件有问题;
0 请登录后投票
   发表时间: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里面。
0 请登录后投票
   发表时间: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>
 
0 请登录后投票
   发表时间: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有什么问题!
0 请登录后投票
   发表时间:2007-02-02  
谢谢! 我已经侧过了,直接用jdbc连事没有问题的,可以把数据插到数据库里面的,所以,这个问题,应该还是ibatis配置文件的问题,或者就是我写的测试方法有问题;
0 请登录后投票
   发表时间:2007-02-02  
引用
<property name="Pool.PingQuery" value="select 1 from ACCOUNT" /> 



这个SQL在你的数据库能跑通么?????????
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics