㈠ 加载iBatis 配置文件与映射文件:
加载配置文件:
① String resource = "sqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(reader);
SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(reader);
② String resource = "sqlMapConfig.properties";
Properties props = Resources.getResourceAsProperties(resource);
SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(props);
③ String resource = "sqlMapConfig.xml";
Stream stream = Resources.getResourceAsStream(resource);
SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(stream);
④ String resource = "sqlMapConfig.xml";
File file = Resources.getResourceAsFile(resource);
SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(file);
㈡ 数据更新:
插入:public int insert(String statementName,Object parameterObject) throws SQLException.
更新:public int update(String statementName,Object parameterObject) throws SQLException.
删除:public int delete(String statementName,Object parameterObject) throws SQLException.
例:sqlMapClient.startTransaction();
User user = new User();
user.setId(100);
user.setUsername("joe");
user.setPassword("123");
user.setEmail("joe@163.com");
int rows = sqlMapClient.insert("users.insertUser",user);//users映射文件namespace值,insertUser映射文件insert的id值
sqlMapClient.commitTransaction();
㈢ 数据查询:
① 查询结果返回一个对象
public Object queryForObject(String statementName,Object parameterObject) throws SQLException.
public Object queryForObject(String statementName,Object parameterObject,Object resultObject) throws SQLException
例:sqlMapClient.startTransaction();
Integer id = new Integer(100);
User user = (User)sqlMapClient.queryForObject("users.getUser",id);
sqlMapClient.commitTransaction();
② 查询结果放入List中
public List queryForList(String statementName,Object parameterObject) throws SQLException.
public List queryForList(String statementName,Object parameterObject,int skipResults,int maxResults) throws SQLException.
public List queryForList(String statementName,Object parameterObject,RowHandler rowHandler) throws SQLException.
例:sqlMapClient.startTransaction();
List list = sqlMapClient.queryForList("users.getUserList",null);
sqlMapList.commitTransaction();
例:sqlMapClient.startTransaction();
List list = sqlMapClient.queryForList("users.getUserList",null,0,40);
sqlMapList.commitTransaction();
例:sqlMapClient.startTransaction();
Rowhandler rowhandler = new MyRowHandler();
List list = sqlMapClient.queryForList("users.getUserList",null,rowhandler );
sqlMapList.commitTransaction();
public class MyRowHandler implements RowHandler{
public void handlerRow(Object obj,List list) throws SQLException{
User user = (User)obj;
user.setPassword("123");
sqlMapClient.update("users.updateUser",user);
}
}
③ 分页查询
public PaginatedList queryForPaginatedList(String statementName,Object parameterObject,int pageSize) throws SQLException.
例:PaginatedList list = sqlMapClient.queryForPaginatedList("users.getUserList",null,10);
list.nextPage(); //下一页
list.previous(); //前一页
list.isFirstPage(); //是否是首页
list.isMiddlePage(); //是否是中间页
list.isLastPage(); //是否是最后一页
list.isPreviousPageAvaliable(); //是否有前一页
list.getPageIndex(); //获得当前页码
list.getPageSize(); //获得页面大小。
④ 查询结果放入Map中
public Map queryForMap(String statementName,Object parameterObject,String keyProperty) thorws SQLException.
public Map queryForMap(String statementName,Object parameterObject,String keyProperty,String valueProperty) thorwsSQLException.
例:sqlMapClient.startTransaction();
Map map = sqlMapClient.queryForMap("users.getUserList",null,"id");
sqlMapClient.commitTransaction();
User user = (User)map.get(100);
⑤ 批量处理(insert/update/delete)
sqlMapClient.startBatch();
//...execute statements
sqlMapClient.executeBatch();
事务管理
public void startTransaction() throws SQLException //开始事务
public void commitTransaction() throws SQLException //提交事务
public void rollbackTransaction() throws SQLException //回滚事务
public void endTransaction() throws SQLException //结束事务
注:对每个SqlMapClient实例,一个线程最多只能打开一个事务。
使用自动事务
如果没有使用startTransaction()、commitTransaction()、rollbackTransaction()方法明确地划分事务范围,事务将自动执行。不建议使用。
使用全局事务
全局事务也叫分布式事务,它可以允许在同一事务中更新多个数据库,即同时成功或失败。全局事务即可以手工管理,也可以有框架来管理。
使用手工来管理全局事务,必须在配置文件中设定<transactionManager>的type的属性值设为EXTERNAL。
使用框架来管理全局事务,必须在配置文件中设定<transactionManager>的type的属性值设为JTA。
例:try{
sqlMapClient.startTransaction();
sqlMapClient0.startTransaction();
sqlMapClient.insert(...);
sqlMapClient0.update(...);
sqlMapClient0.commitTransaction();
sqlMapClient.commitTransaction();
}finally{
try{
sqlMapClient0.endTransaction();
}finally{
sqlMapClient.endTransaction();
}
}
相关推荐
Ibatis的一个简单示例 Ibatis的一个简单示例 Ibatis的一个简单示例
ibatis开发资料及简单示例,包括JAR包 ibatis开发资料及简单示例,包括JAR包
一个简单的struts+spring+ibatis示例的源码,在源码中包含一个简单的分布功能
自己写的ibatis例子,可以用来入门,也可以学习一下配置文件的配置方法,程序中对可以Student表进行增删改查,自己也可以根据需要添加新的方法,里面有源码和数据库脚本。有需要的,可以下过来看看。
ibatis入门级的增删改查实例 简单的实现了增,删,改,查操作 属于入门级的示例
Ibatis增删改简单应用配置示例说明实例 oracle 11g + ibatis2
针对struts2与ibatis,spring的整合做比较详细的说明,是初学者比较适合的例子
Ibatis_3__最简单的示例.pdf Ibatis_3__最简单的示例.pdf
Ibatis增删改简单应用配置示例说明,及项目 第一次写文档,请大家多包涵
用struts2+spring+ibatis实现了 增删查改翻页功能,使用的数据库是mysql, web服务器是tomcat
10.1.2 一个简单示例 175 10.2 配置DAO 177 10.2.1 properties元素 177 10.2.2 context元素 178 10.2.3 transactionManager元素 178 10.2.4 DAO元素 182 10.3 配置技巧 183 10.3.1 多个服务器 183 10.3.2 多种数据库...
struts2与iBATIS结合的简单示例,数据库是mysql
该示例演示使用iBATIS操纵Oracle、MySQL和MS SERVER三种数据库(实现查询与新增动作),只需要修改配置档与SQL影射档即可,而Java部分的代码不用修改。本人觉得,该框架一个非常简单、使用方便的持久层框架。其中:...
iBatis入门好东东,最简单的iBatis入门例子.rar 有源码示例
为最初学习spring+springMVC+ibatis的同学提供一个简单的参考示例
给初学ibatis的同学,没有采用strus,sping.配置简单明了适合初学了解,数据库在DB文件下,需要恢复到本机,实现简单的权限管理,数据增加\删除\修改,采用exjs制作界面美观简洁.有不清楚可以发邮件 chenqian3@163.com ,...
ssi_struts2_spring_ibatis oracle数据库.增删改查分页 示例.有简单页面.好资料.!
16 SqlMapClient 基本操作示例.......................................................... 16 OR 映射.................................................................................................
简单的Ibatis.net框架的实例代码,用到LocalDB数据库;其中SQLite数据库未连接成功,问题尚未解决。还有个Spring.Net框架的示例程序
第02课 servlet3.0新特性之@WebServlet(登录示例) 第03课 servlet3.0新特性之@WebServlet_@WebInitParam详解 第04课 servlet3.0新特性之@WebFilter_@WebListener 第05课 JQuery AJAX 注册验证+二级菜单(JSON) ...