刚学Ibaits,有很多疑问,这不来了:
在ibatis官方网站上下载了JPetStore。
里面涉及到了DaoManager,这个不是很懂,和开始学的SqlMapClient有点混淆了。
那位高人能否帮在下分析一下,SqlMapClient和DaoManager的区别。还有一个不明白的地方是:看到DaoManager在WEB环境下怎么访问数据源,但是自己做的一个SqlMapClient的事例程序,
却不知怎么访问,下面是我从jdbc到JNDI,sqlMapConfig.xml里面配置的情况,程序的其他代码没有变化:
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property value="${driver}" name="JDBC.Driver"/>
<property value="${url}" name="JDBC.ConnectionURL"/>
<property value="${username}" name="JDBC.Username"/>
<property value="${password}" name="JDBC.Password"/>
</dataSource>
</transactionManager>
-------------------------------------------------------------------------
<transactionManager type="JDBC"> //数据源能在jsp和servlet中正常访问
<dataSource type="JNDI">
<property name="DataSource" value="java:comp/env/jdbc/mySqlJndi" />
</dataSource>
</transactionManager>
这个也想请教一下,怎么做才能让SqlMapClient访问到数据源。
在ibatis官方网站上下载了JPetStore。
里面涉及到了DaoManager,这个不是很懂,和开始学的SqlMapClient有点混淆了。
那位高人能否帮在下分析一下,SqlMapClient和DaoManager的区别。还有一个不明白的地方是:看到DaoManager在WEB环境下怎么访问数据源,但是自己做的一个SqlMapClient的事例程序,
却不知怎么访问,下面是我从jdbc到JNDI,sqlMapConfig.xml里面配置的情况,程序的其他代码没有变化:
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property value="${driver}" name="JDBC.Driver"/>
<property value="${url}" name="JDBC.ConnectionURL"/>
<property value="${username}" name="JDBC.Username"/>
<property value="${password}" name="JDBC.Password"/>
</dataSource>
</transactionManager>
-------------------------------------------------------------------------
<transactionManager type="JDBC"> //数据源能在jsp和servlet中正常访问
<dataSource type="JNDI">
<property name="DataSource" value="java:comp/env/jdbc/mySqlJndi" />
</dataSource>
</transactionManager>
这个也想请教一下,怎么做才能让SqlMapClient访问到数据源。
解决方案 »
- Java servlet问题,初学请教~~
- jsp与javascript传值的问题
- 多线程如何debug
- 小弟刚接触webwork,遇到一个关于使用下拉框问题,弄了很久极端郁闷,请大家帮忙解答,谢谢,在线等!
- 在J2EE中加载音频文件出错,请各位老大帮帮忙!
- XML的主要解析方法是什么?
- 挑战性的STRUTS html:select 的问题,是不是STRUTS的BUG,或者不完善
- 求助!!jndi的问题
- Java中,有没有输入IP地址的控件?
- 各位大侠,在windows2000下用jb7调试RMI,用jb7提供的例子都通不过!!求救
- 关于struts2 增加过滤器后,request的对象消失
- 求教视频?关于监听和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.ibm.db2.jdbc.net.DB2Driver" />
<property name="JDBC.ConnectionURL"
value="jdbc:db2:localhost:wznx" />
<property name="JDBC.Username" value="db2admin" />
<property name="JDBC.Password" value="db2admin" />
-->
<property name="JDBC.Driver"
value="com.ibm.db2.jcc.DB2Driver" />
<property name="JDBC.ConnectionURL"
value="jdbc:db2://135.55.2.192:50000/RRCRM" />
<property name="JDBC.Username" value="rrcrm" />
<property name="JDBC.Password" value="rrcrm" />
<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 user_info" />
<property name="Pool.PingEnabled" value="false" />
<property name="Pool.PingConnectionsOlderThan" value="1" />
<property name="Pool.PingConnectionsNotUsedFor" value="1" />
</dataSource>
</transactionManager>
<sqlMap resource="com/ibatis/test/User.xml" />
</sqlMapConfig>
================================================test.java ==========================================package com.ibatis.test;import java.io.Reader;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.idosoft.utils.DateUtils;
public class Test { /**
* @param args
*/
public static void main(String[] args) {
String resource ="com/ibatis/test/SqlMapConfig.xml";
Reader reader;
SqlMapClient sqlMap= null ;
try{
reader = Resources.getResourceAsReader(resource);
//XmlSqlMapClientBuilder xmlBuilder =
//new XmlSqlMapClientBuilder();
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
//SqlMapClient sqlMap = xmlBuilder.buildSqlMap(reader);
//sqlMap系统初始化完毕,开始执行update操作
Map m = new Map();
//设置需要的参数
List l = sqlMap.queryForList("testSql",m);
System.out.println("over time:"+DateUtils.getCurrDate("yyyy-MM-dd HH:mm:ss"));
sqlMap.commitTransaction();
} catch ( Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
sqlMap.endTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
===============================
楼上正解,用spring和ibatis很方便就能获得连接,事务也很好控制。。
DaoManager daoManager = DaoManagerBuilder.buildDaoManager(reader);
PersonDao personDao = daoManager.getDao(PersonDao.class);//反射生成dao personDao.insertPerson (person); // Starts transaction
person.setLastName("Begin");
personDao.updatePerson (person); // Starts a new transaction
package com.ibatis.test;import java.io.Reader;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.idosoft.utils.DateUtils;
public class Test {/**
* @param args
*/
public static void main(String[] args) {
String resource ="com/ibatis/test/SqlMapConfig.xml";
Reader reader;
SqlMapClient sqlMap= null ;
try{
reader = Resources.getResourceAsReader(resource);
//XmlSqlMapClientBuilder xmlBuilder =
//new XmlSqlMapClientBuilder();
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
//SqlMapClient sqlMap = xmlBuilder.buildSqlMap(reader);
//sqlMap系统初始化完毕,开始执行update操作
Map m = new Map();
//设置需要的参数
List l = sqlMap.queryForList("testSql",m);
System.out.println("over time:"+DateUtils.getCurrDate("yyyy-MM-dd HH:mm:ss"));
sqlMap.commitTransaction();
} catch ( Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();}
finally{
try {
sqlMap.endTransaction();} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
学习