先说两句:这个搭配似乎和现在的主流(struts+spring+hibernate)差太远,不过做啥还是从简单来的好,先入门,再深入嘛(其实spring和hibernate我也不会,哦呵呵呵呵....)
开发环境:NetBeans5.5,iBatis版本未知,大概是2.0(汗个...),SQLServer2000
开始:
新建一个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"
>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<
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
>
上面是页面代码,简单说明一下,使用的都是标准struts标签,一个表单,下面那些主要是为了在查询数据库成功后接受查询返回的消息的,这些都是小儿科啦,下面主要介绍iBatis的配置:
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跳转,是跳转回我们提交表单的那个页面的,当然我们也可以写成让它跳转到其他页面的
运行一下,就可以看到效果啦,提交表单后,会返回查询出的用户信息
开发环境:NetBeans5.5,iBatis版本未知,大概是2.0(汗个...),SQLServer2000
开始:
新建一个web工程,建立的时候记得把struts选上哦~~
建立一个jsp页面,比如叫做iBatisTest.jsp
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
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文件的名字也是随意,只要你自己记住就成了,这个文件是配置文件,具体内容如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
这句是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文件
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
这部分语句主要是根据我们在jsp表单里提供的用户名密码来查询用户信息(相当于验证的感觉)
parameterClass和 resultClass 是用来提供查询参数和接收查询结构的javaBean,这个bean的结构也非常简单,只需要将你数据表中的字段分别在bean中声明,并写一下set和get方法就可以了(类型和名称需要和数据表中的字段一致)
这个bean的路径和名字也是随意的,这里的路径是我的程序中的路径
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
当我们想使用bean中提供的参数时只需在sql语句中用##标识出,比如#username#即表示bean中的username变量,这里还需要说明一下的是,我的表名为user(又不专业了,因为这个是sqlserver的保留字,想用它做表名,需要在查询的时候加上[],如[user],惭愧惭愧
我这里的数据表的结构是
三个字段userID,username,password,表名user
userID是int类型,其他两个是char(写在程序里用String就可以)
5,在程序中操作数据库
通过以上的设置,环境就算搭建完毕,下面是在程序中的调用
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
sqlID 表示SqlMap中我们写的select代码段的id ( <select id="selectUserInfo" )
obj 表示提供查询参数的输入对象,我们的例子就应该是那个UserBean
6.在action中调用这个方法
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
public ActionForward execute(ActionMapping mapping, ActionForm form,
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
UserBean 就是我们对应数据表的字段建立的bean
调用方法后将查询数据库,然后返回一个UserBean形式的返回对象,如果查询成功,里面就记载了这个用户的信息,当然里面到底想存什么东西,我们可以在SqlMap中的查询语句里写,我们这次的查询是select * 的,所以返回的用户所有的信息
这里的forward跳转,是跳转回我们提交表单的那个页面的,当然我们也可以写成让它跳转到其他页面的
运行一下,就可以看到效果啦,提交表单后,会返回查询出的用户信息