新建一个web工程,导入struts包,建立一个jsp页面,比如叫做iBatisTest.jsp
<%@ page contentType="text/html"%>
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>iBatis Test</title>
</head>
<body>
<h1>iBatis Test</h1>
<html:errors/><br>
<html:form action="/selectUserInfo.do" >
username:<html:text property="username" value="gao" size="40"></html:text><br>
password:<html:password property="password" value="111" size="40"></html:password><br>
<html:submit value="submit" property="sub"/>
</html:form><br>
<logic:present name="user">
username:<bean:write name="user" property="username"/><br>
password:<bean:write name="user" property="password"/><br>
userID:<bean:write name="user" property="userID"/>
</logic:present>
</body>
</html>
1.导入必要的jar包,这里导入了六个,三个是iBatis用到的包,三个是数据库驱动包(放在lib文件夹下面就成啦)
ibatis-common-2.jar,ibatis-dao-2.jar,ibatis-sqlmap-2.jar,masqlserver.jar,mabase.jar,mautil.jar
2.建立config文件,我的目录是在工程根目录下com/iBatis/Config/SqlMapConfig.xml这个路径随意,这个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>
<properties resource="/com/iBatis/Config/SqlMapConfig.properties" />
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<transactionManager type="JDBC" >
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
<property name="JDBC.DefaultAutoCommit" value="true" />
<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/iBatis/SqlMap/Test.xml" />
</sqlMapConfig>
<properties resource="/com/iBatis/Config/SqlMapConfig.properties" />
这句是properties文件路径,用来提供数据库连接信息
<sqlMap resource="com/iBatis/SqlMap/Test.xml" />
这句是SqlMap文件路径,用来记录数据库操作语句
其他部分不必改动,上述两个文件的文件名和路径可以自己随意设置,具体内容下面会叙述
3.properties文件
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=GaoTest
username=sa
password=infact
说明:
driver指示的是驱动,不必改动
url指示数据库连接串,最后那个DatabaseName是你的数据库名字,我的是GaoTest(鄙姓高,嘎嘎)
username指示的是用户名,password指示密码(就是你数据库的用户名密码,这里需要用数据库身份验证登录)
4.SqlMap文件
<?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="GaoTest"> <select id="selectUserInfo" parameterClass="com.myapp.Beans.UserBean" resultClass="com.myapp.Beans.UserBean">
select * from [user] where username=#username# and password=#password#
</select>
</sqlMap>
这里主要需要注意的是:
这部分语句主要是根据我们在jsp表单里提供的用户名密码来查询用户信息(相当于验证的感觉)
parameterClass和resultClass是用来提供查询参数和接收查询结构的javaBean,这个bean的结构也非常简单,只需要将你数据表中的字段分别在bean中声明,并写一下set和get方法就可以了(类型和名称需要和数据表中的字段一致)
这个bean的路径和名字也是随意的,这里的路径是我的程序中的路径
public class UserBean {
private int userID;
private String username;
private String password;
public UserBean() {
}
public int getUserID() {
return userID;
}
public void setUserID(int userID) {
this.userID = userID;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
当我们想使用bean中提供的参数时只需在sql语句中用##标识出,比如#username#即表示bean中的username变量,这里还需要说明一下的是,我的表名为user(又不专业了,因为这个是sqlserver的保留字,想用它做表名,需要在查询的时候加上[],如[user],惭愧惭愧
我这里的数据表的结构是
三个字段userID,username,password,表名user
userID是int类型,其他两个是char(写在程序里用String就可以)
5,在程序中操作数据库
通过以上的设置,环境就算搭建完毕,下面是在程序中的调用
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
//类名是随意的
public class DBOperation {
private String resource = "com/iBatis/Config/SqlMapConfig.xml";//这个路径是我们放置ibatis配置文件的地方
private SqlMapClient sqlMap = null;
public DBOperation() {
Reader reader = null;
try ...{
reader = Resources.getResourceAsReader(resource);
} catch (IOException ex) {
ex.printStackTrace();
}
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
}
public Object selectObj(String sqlID,Object obj){
Object result = null;
try ...{
sqlMap.startTransaction();
result = sqlMap.queryForObject(sqlID,obj);
sqlMap.commitTransaction();
} catch (SQLException ex) {
ex.printStackTrace();
}
return result;
}
}
这样一个简单的实现查询功能的方法就写好了,这个方法的两个参数的含义为:
sqlID 表示SqlMap中我们写的select代码段的id (<select id="selectUserInfo" )
obj 表示提供查询参数的输入对象,我们的例子就应该是那个UserBean
6.在action中调用这个方法
private final static String SUCCESS = "success";
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
SelectUserInfoForm formSUI = (SelectUserInfoForm)form;
UserBean user = new UserBean();
user.setUsername(formSUI.getUsername());
user.setPassword(formSUI.getPassword());
user = (UserBean) new DBOperation().selectObj("selectUserInfo",user);
request.setAttribute("user",user);
return mapping.findForward(SUCCESS);
}
这个ActionForm是用来接我们页面上的那个表单的,代码就不贴了
UserBean 就是我们对应数据表的字段建立的bean
调用方法后将查询数据库,然后返回一个UserBean形式的返回对象,如果查询成功,里面就记载了这个用户的信息,当然里面到底想存什么东西,我们可以在SqlMap中的查询语句里写,我们这次的查询是select * 的,所以返回的用户所有的信息
这里的forward跳转,是跳转回我们提交表单的那个页面的,当然我们也可以写成让它跳转到其他页面的
运行一下,就可以看到效果啦,提交表单后,会返回查询出的用户信息
分享到:
相关推荐
Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...
《深入解析iBatis源码》 iBatis,一个优秀的Java持久层框架,以其轻量级、灵活的特性在众多ORM(Object-Relational Mapping)框架中独树一帜。iBatis的核心在于它的SQL映射机制,它将数据库操作与业务逻辑解耦,...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写SQL语句上,而无需关注JDBC代码的编写。Ibatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的...
iBATIS是一个由Clinton Begin创建,目前由Apache基金会支持的持久化框架,它专注于数据库查询的简化,尤其在JDBC编程方面提供了极大的便利。相对于全自动化ORM解决方案如Hibernate,iBATIS被称为“半自动化”ORM实现...
iBATIS DAO是Java开发中的一个持久层框架,它提供了数据访问对象(DAO)的实现,使得数据库操作更加简单和灵活。在这个2.3.4.726版本的源码中,我们可以深入理解iBATIS DAO的工作原理,并通过添加注释来帮助我们更好...
Ibatis,全称为MyBatis,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis可以使用简单的XML或注解进行配置和原始映射,将...
### Ibatis3手册知识点概述 Ibatis3作为一款流行的持久层框架,在软件开发领域具有重要的地位。本篇文章基于“Ibatis3手册 Ibatis3参考手册”的标题及描述,深入解析Ibatis3的核心概念、架构特点以及如何进行实际...
与Eclipse中的Abator不同,iBatis Plugin不仅限于代码生成,而是全方位地优化了iBatis的开发体验。 **配置iBatis Plugin** 首先,你需要从IntelliJ IDEA的插件市场下载iBatis Plugin。安装完成后,配置数据源...
ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,将数据库操作与业务逻辑解耦,使得开发者可以更专注于业务逻辑的实现,而无需关心繁琐的SQL语句编写。本篇文章将深入探讨Ibatis API、文档...
**Ibatis 指南** Ibatis 是一个优秀的开源持久层框架,它允许开发者将 SQL 查询与 Java 代码分离,从而避免了传统的 JDBC 编程中的大量模板代码。作为一个轻量级的框架,Ibatis 提供了灵活的映射机制,使得 XML 或...
iBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架,将SQL语句与Java代码分离,使得数据库访问更为灵活和可控。在本压缩包中,你将找到一系列关于iBatis的学习资源,包括PDF文档、实例代码等,这些都是深入...
《iBATIS实战》是讲述iBATIS框架的权威著作。书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。《iBATIS实战》的最后给出了一个...
### ibatis应对批量update 在处理大量数据更新时,传统的for循环方式往往会导致效率低下。这是因为每一次循环都需要执行一次数据库连接操作,对于批量更新来说,这样的处理方式显然不够高效。为了解决这个问题,...
**IBATIS API 帮助文档与IBATIS开发文档详解** IBATIS,一个由iBATIS公司开发的开源持久层框架,是Java世界中广泛使用的数据访问接口(DAO)工具。它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java...
Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...
iBATIS 是一款著名的开源Java持久层框架,它在2005年由Clinton Begin创建,最初命名为Apache MyBatis,后来发展为独立的项目。在本主题中,我们关注的是iBATIS 2.3.4版本的jar包及其源码。 首先,`ibatis-2.3.4.jar...
《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...
iBATIS是一个优秀的Java持久层框架,它提供了一个SQL映射框架,使开发者能够将SQL语句直接写在配置文件中,与Java代码分离,从而实现了数据访问逻辑和业务逻辑的解耦。"ibatis2.rar"这个压缩包文件包含了关于iBATIS ...