UserAction.java
package com.ibatis.action;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.ibatis.common.resources.Resources;
import com.ibatis.entity.User;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
User user = null;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
String resource = "sqlMapConfig.xml";
SqlMapClient sqlMapClient =null;
Reader reader = null;
@Override
public String execute() throws Exception {
String resultFlag = "input";
try {
//讀取並初始化文件
reader = Resources.getResourceAsReader(resource);
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
List<User> list= sqlMapClient.queryForList("getUser",user);
ServletActionContext.getRequest().setAttribute("list", list);
System.out.println(list.get(0).getName());
System.out.println(list.get(0).getId());
System.out.println(list.get(0).getPass());
resultFlag = "success";
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return resultFlag;
}
public String delete(){
String result = "input";
try {
System.out.println("userid:"+user.getId());
reader = Resources.getResourceAsReader(resource);
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
sqlMapClient.startTransaction();
sqlMapClient.delete("deleteUser",user);
sqlMapClient.commitTransaction();
result = "success";
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(sqlMapClient!=null){
sqlMapClient.endTransaction();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
public String add(){
String result = "input";
try {
reader = Resources.getResourceAsReader(resource);
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
sqlMapClient.startTransaction();
sqlMapClient.insert("insertUser",user);
sqlMapClient.commitTransaction();
result = "success";
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(sqlMapClient!=null){
sqlMapClient.endTransaction();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
public String buildTable(List list){
String result = null;
return result;
}
}
User.java
package com.ibatis.entity;
public class User {
private Integer id;
private String name;
private String pass;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
User.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" > <sqlMap namespace="User"> <!-- 設置類型別名 --> <typeAlias alias="user" type="com.ibatis.entity.User"/> <select id="getUser" parameterClass="user" resultClass="user"> select id,name,pass from tempdb.dbo.t_user <dynamic prepend="where"> <isNotEmpty prepend="and" property="name"> name=#name# </isNotEmpty> <isNotEmpty prepend="and" property="pass"> pass=#pass# </isNotEmpty> </dynamic> </select> <update id="updateUser" parameterClass="user"> update tempdb.dbo.t_user set name = #name#,pass = #pass# where id = #id# </update> <insert id="insertUser" parameterClass="user"> insert into tempdb.dbo.t_user( <dynamic> <isNotEmpty property="name"> name </isNotEmpty> <isNotEmpty prepend="," property="pass"> pass </isNotEmpty> </dynamic> ) values( <dynamic> <isNotEmpty property="name"> #name# </isNotEmpty> <isNotEmpty prepend="," property="pass"> #pass# </isNotEmpty> </dynamic> ) </insert> <delete id="deleteUser" parameterClass="user"> delete from tempdb.dbo.t_user where id = #id# </delete> </sqlMap>
jdbc.properties
jdbc.driver=net.sourceforge.jtds.jdbc.Driver jdbc.url=jdbc:jtds:sybase://10.12.123.234:4100 jdbc.username=sa jdbc.password=123
message.properties
table.operation=操作 table.update=修改 table.delete=刪除
sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd" > <sqlMapConfig> <!-- <settings cacheModelsEnabled="true" enhancementEnabled="true" --> <!-- lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" --> <!-- maxSessions="10" maxTransactions="5" useStatementNamespaces="true" /> --> <!-- 應用properties文件 --> <properties resource="jdbc.properties"/> <!-- 使用jdbc的事務管理 --> <transactionManager type="JDBC"> <!-- 數據源 --> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="${jdbc.driver}" /> <property name="JDBC.ConnectionURL" value="${jdbc.url}" /> <property name="JDBC.Username" value="${jdbc.username}" /> <property name="JDBC.Password" value="${jdbc.password}" /> <!-- <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/entity/sqlmap/User.xml" /> </sqlMapConfig>
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <!-- <constant name="struts.ui.theme" value="simple"></constant> --> <constant name="struts.i18n.encoding" value="utf-8"></constant> <constant name="struts.custom.i18n.resources" value="message"></constant> <package name="struts" namespace="/" extends="struts-default"> <action name="query" class="com.ibatis.action.UserAction"> <result>/index.jsp</result> </action> <action name="add" class="com.ibatis.action.UserAction" method="add"> <result type="redirectAction">query.action</result> </action> <action name="delete" class="com.ibatis.action.UserAction" method="delete"> <result type="redirectAction">query.action</result> </action> <action name="update" class="com.ibatis.action.UserAction" method="update"> <result type = "redirectAction">qyery.action</result> </action> </package> </struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter <!-- org.apache.struts2.dispatcher.FilterDispatcher --> </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!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>Insert title here</title>
<script type="text/javascript">
function oper(i){
var str = null;
if(i==1){
str = "query.action";
}else if(i==2){
str = "add.action";
}
var from = document.getElementById("form");
form.action = str;
form.submit();
}
</script>
</head>
<body>
<form id="form" method="post">
<input type="text" name="user.name" />
<input type="text" name="user.pass"/>
<input type="button" value="query" οnclick="oper(1)"/>
<input type="button" value="add" οnclick="oper(2)"/>
</form>
<div>
<table border="1" cellpadding="0" cellspacing="0" style="width: 500px;text-align: center;" >
<tr>
<td>id</td>
<td>name</td>
<td>pass</td>
<td><s:text name="table.operation"/></td>
</tr>
<s:iterator value="#request.list" var="val">
<tr>
<td><s:property value="#val.id"/></td>
<td><s:property value="#val.name"/></td>
<td><s:property value="#val.pass"/></td>
<td><a href="update.action?user.id=<s:property value="#val.id"/>"><s:text name="table.update"/></a>
<a href="delete.action?user.id=<s:property value="#val.id"/>"><s:text name="table.delete"/></a></td>
</tr>
</s:iterator>
</table>
</div>
</body>
</html>
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
success!!!
</body>
</html>