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" onclick="oper(1)"/> <input type="button" value="add" onclick="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>