iBATIS Demo



 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>&nbsp;&nbsp;
					<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>

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章