锁定老帖子 主题:ibatis入门问题
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-02
包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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-02-02
如果mysql启动了,那么楼主试试手工连数据库
|
|
返回顶楼 | |
发表时间:2007-02-02
mysql是启动的,你说的手动连是指什么?不太明白,请指点一下,谢谢!
|
|
返回顶楼 | |
发表时间:2007-02-02
直接写JDBC连数据库试试
|
|
返回顶楼 | |
发表时间:2007-02-02
没问题,数据库驱动有,连接字符串也没有问题,用户名,密码都没有问题,应该还是ibatis配置文件或者是User.xml文件有问题;
|
|
返回顶楼 | |
发表时间: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里面。 |
|
返回顶楼 | |
发表时间: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> |
|
返回顶楼 | |
发表时间:2007-02-02
flyeagle 写道 有sample数据库,有表t_user,改成如下,还是一样的问题:
我的意思是用DriverManager.getConnection方式连接试验下看有无问题,目的是先确认数据库联接是否有问题,如无问题则可确认与iBatis有关,不一定用iBatis出现问题就怀疑iBatis有什么问题!
<?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> |
|
返回顶楼 | |
发表时间:2007-02-02
谢谢! 我已经侧过了,直接用jdbc连事没有问题的,可以把数据插到数据库里面的,所以,这个问题,应该还是ibatis配置文件的问题,或者就是我写的测试方法有问题;
|
|
返回顶楼 | |
发表时间:2007-02-02
引用 <property name="Pool.PingQuery" value="select 1 from ACCOUNT" />
这个SQL在你的数据库能跑通么????????? |
|
返回顶楼 | |