博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iBatis开发的一个应用
阅读量:5035 次
发布时间:2019-06-12

本文共 5801 字,大约阅读时间需要 19 分钟。

今天开始学习iBatis框架,感觉这个框架很轻巧,方便,使用上手很快,没有多大的难点,下面就介绍一下第一个应用开发的步骤:

第一步:在mysql的test数据库中建立一张表:account

create table account(_id int,first_name varchar(10),last_name varchar(10),emall varchar(10),primary key(_id))engine=InnoDB default charset=gb2312;

然后插入两条测试数据:

insert account(_id,first_name,last_name,emall) values(1,'jiangwei','wei','123@qq.com');insert account(_id,first_name,last_name,emall) values(2,'huang','yang','234@qq.com');

这样第一步就完成了

第二步:开始配置iBatis文件:

首先来看一下应用工程的结构图:

配置:Account.xml:

//命名空间
insert into accout ( _id, first_name, last_name, emall values ( #id#, #firstName#, #lastName#, #emailAddress# )
update account set first_name = #firstName#, last_name = #lastName#, emall = #emailAddress# where _id = #id#
delete from account where _id = #id#

上面的配置完成后,接下来开始配置全局的文件:SqlMapConfig.xml:

对于上面的数据源配置的参数说明:

transactionManager节点定义了iBatis的事务管理器,提供三种方式,(1、JDBC,2、jta:分布式数据库,3、EXTERNAL:itbatis本身不做事务处理由外部进行处理);dataSource节点:从属于transactionManager节点,用于设定ibatis运行期使用的DataSource属性;
type属性:type属性指定了dataSource的实现模式,共三种模式,(1、simple:ibatis提供的较小的 2、dbcp:是apache实现的连接池 3、jndi:tomcate或weblogic提供的服务); JDBC.Driver:JDBC驱动; JDBC.ConnectionURL:数据库连接URL,如果用的是SQLServer JDBC Driver,需要在url后追加SelectMethod=Cursor以获得JDBC事务的多Statement支持;JDBC.Username:数据库用户名; JDBC.Password:数据库用户密码; Pool.MaximumActiveConnections:数据库连接池可维持的最大容量; Pool.MaximumIdleConnections:数据库连接池中允许的挂起(idle)连接数; Pool.MaximumCheckoutTime数据库连接池中,连接被某个任务所允许占用的最大时间,如果超过这个时间限定,连接将被强制收回,(毫秒); Pool.TimeToWait:当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,此时线程将进入等待状态,直到池中出现空闲连接。此参数设定了线程所允许等待的最长时间,(毫秒); Pool.PingQuery:数据库连接状态检测语句。某些数据库在某段时间持续处于空闲状态时会将其断开。而连接池管理器将通过此语句检测池中连接是否可用, 检测语句应该是一个最简化的无逻辑SQL。如“select 1 from user”,如果执行此语句成功,连接池管理器将认为此连接处于可用状态; Pool.PingEnabled:是否允许检测连接状态; Pool.PingConnectionsOlderThan:对持续连接时间超过设定值(毫秒)的连接进行检测; Pool.PingConnectionsNotUsedFor:对空闲超过设定值(毫秒)的连接进行检测;

第三步实现源代码:

Account的实体类:

package com.ibatis.demo.domain;public class Account {  private int id;  private String firstName;  private String lastName;  private String emailAddress;  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public String getFirstName() {    return firstName;  }  public void setFirstName(String firstName) {    this.firstName = firstName;  }  public String getLastName() {    return lastName;  }  public void setLastName(String lastName) {    this.lastName = lastName;  }  public String getEmailAddress() {    return emailAddress;  }  public void setEmailAddress(String emailAddress) {    this.emailAddress = emailAddress;  }}

这个类没什么好说的了。

然后就是iBatis访问数据的类:

package com.ibatis.demo.data;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;import com.ibatis.common.resources.Resources;import com.ibatis.demo.domain.Account;import java.io.Reader;import java.io.IOException;import java.util.List;import java.sql.SQLException;public class IbaitsData {  private static SqlMapClient sqlMapper;  static {    try {      //读取iBatis的配置文件:SqlMapConfig.xml      Reader reader = Resources.getResourceAsReader("/SqlMapConfig.xml");      sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);      reader.close();     } catch (IOException e) {      throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);    }  }  //查询account表中的所有记录  @SuppressWarnings("unchecked")  public static List selectAllAccounts () throws SQLException {    return sqlMapper.queryForList("selectAllAccounts");  }  //查询account表中_id为id的记录  public static Account selectAccountById  (int id) throws SQLException {    return (Account) sqlMapper.queryForObject("selectAccountById", id);  }  //插入一条记录  public static void insertAccount (Account account) throws SQLException {    sqlMapper.insert("insertAccount", account);  }  //更新一条记录  public static void updateAccount (Account account) throws SQLException {    sqlMapper.update("updateAccount", account);  }  //删除一条记录  public static void deleteAccount (int id) throws SQLException {    sqlMapper.delete("deleteAccount", id);  }}

这个类就是访问数据库的数据,可以查看一下sqlMapper的一些其他的方法的使用.

然后就是写一个ServletDemo来访问数据测试了:

package com.ibaits.demo.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.ibatis.demo.data.IbaitsData;public class ServletDemo extends HttpServlet{private static final long serialVersionUID = -1461257848765985759L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {try{req.setAttribute("listAccout", IbaitsData.selectAllAccounts());req.getRequestDispatcher("/index.jsp").forward(req, resp);}catch(Exception e){e.printStackTrace();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req,resp);}}

这里只测试了访问所有的记录,将访问的结果放到request域中,然后再index.jsp中使用jstl标签访问:

用户id:
姓:
名:
邮箱地址:

最后千万不要忘记导入相关的jar包:具体引用到的jar包可以查看上面的图片。

转载于:https://www.cnblogs.com/roccheung/p/5797417.html

你可能感兴趣的文章
css中的列表样式
查看>>
python 多线程
查看>>
spring boot打成可执行jar
查看>>
linux实现开机自启动脚本
查看>>
进程、线程亲缘性和画笔CPen
查看>>
JavaWeb中的监听器
查看>>
深入理解mongodb查询条件语句
查看>>
caffe源码阅读
查看>>
SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件?
查看>>
WPF 按钮圆角 分类: .NET 2012-08-...
查看>>
Swift-Swift中的全局变量和函数的创建
查看>>
MySQL 学习笔记(三):完整性和触发器设计
查看>>
openstack neutron sriov部署
查看>>
[SPSS]学习笔记--数据分布形状描述
查看>>
.NET Framework 卸载工具 -- .NET Framework Cleanup Tool User's Guide
查看>>
如何为ios程序增加itunes同步功能
查看>>
Hibernate QBC 简单收集
查看>>
cf B. Hungry Sequence
查看>>
C语言数组删除增加一个元素
查看>>
Spring MVC JSON 实现JsonSerializer Date类型转换
查看>>