本文以简单人事管理系统为基础.介绍手动方式配置Spring+Struts2+Ibatis的项目基本框架
首先,用MyEclipse 新建一个web project
一.Ibatis
先是Ibatis的配置:
1.把ibatis-2.3.4.726.jar复制到项目的WEB-INFO/lib下 刷新eclipse
2.建立ibatis的包,在此 我创建了 com.dbke.hrms.ibatis.map包.
3.在包中新建一个 dept.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="deptEntity"> <typeAlias alias="employee" type="com.dbke.hrms.ibatis.domain.TEmployee" /> <typeAlias alias="dept" type="com.dbke.hrms.ibatis.domain.TDept" /> <resultMap id="get-dept-result" class="dept"> <result property="IDeptId" column="DEPTID" jdbcType="int" javaType="java.lang.Integer" /> <result property="vcDeptCode" column="DEPTCODE" jdbcType="VARCHAR(30)" javaType="java.lang.String" /> <result property="vcDeptName" column="DEPTNAME" jdbcType="VARCHAR(10)" javaType="java.lang.String" /> <result property="vcDeptAddress" column="ADDRESS" jdbcType="VARCHAR(50)" javaType="java.lang.String" /> <result property="vcDeptTelphone" column="TELPHONE" jdbcType="VARCHAR(20)" javaType="java.lang.String" /> <result property="vcDeptDesc" column="DESC" jdbcType="VARCHAR(255)" javaType="java.lang.String" /> <result property="employees" column="DEPTID" select="findEmpByDeptId" /> </resultMap> <parameterMap id="insert-dept-full-paramter" class="dept" > <parameter property="IDeptId" jdbcType="int"/> <parameter property="vcDeptCode" jdbcType="VARCHAR(30)"/> <parameter property="vcDeptName" jdbcType="VARCHAR(10)"/> <parameter property="vcDeptAddress" jdbcType="VARCHAR(50)"/> <parameter property="vcDeptTelphone" jdbcType="VARCHAR(20)"/> <parameter property="vcDeptDesc" jdbcType="VARCHAR(255)"/> </parameterMap> <select id="findDeptById" parameterClass="int" resultMap="get-dept-result"> select * from T_DEPT as dept <dynamic prepend="WHERE"> <isNotEmpty property="value">dept.DEPTID= #value#</isNotEmpty> </dynamic> </select> <select id="findEmpByDeptId" parameterClass="int" resultClass="employee"> <![CDATA[ select emp.EMPID as IEmpId,emp.EMPNAME as vcEmpName,emp.GENDER as IEmpGender,emp.AGE as IEmpAge ,emp.IDCARD as vcEmpIdCard,emp.PARTY as vcEmpParty,emp.SCHOOL as vcEmpSchool,emp.MAJOR as vcEmpMajor,emp.TITLE as vcEmpTitle,emp.POST as vcEmpPost from T_EMPLOYEE as emp where emp.DEPTID= #value# ]]> </select> <select id="findDeptByName" parameterClass="java.lang.String" resultMap="get-dept-result"> select * from T_DEPT as dept <dynamic prepend="WHERE"> <isNotEmpty property="value">dept.DEPTNAME= #value#</isNotEmpty> </dynamic> </select> <select id="findDeptByDeptCode" parameterClass="java.lang.String" resultMap="get-dept-result"> select * from T_DEPT as dept <dynamic prepend="WHERE"> <isNotEmpty property="value">dept.DEPTCODE= #value#</isNotEmpty> </dynamic> </select> <insert id="insertDept" parameterMap="insert-dept-full-paramter"> insert into T_DEPT ( DEPTID,DEPTCODE,DEPTNAME,ADDRESS,TELPHONE,`DESC` ) values( ?,?,?,?,?,? ) </insert> </sqlMap>
4.建立包 com.dbke.hrms.ibatis.domain 并建立PO类 TDept.java :
package com.dbke.hrms.ibatis.domain; import java.util.List; public class TDept { private Integer IDeptId; //部门ID private String vcDeptCode; //部门编号 private String vcDeptName; //部门名称 private String vcDeptAddress; //部门地址 private String vcDeptTelphone; //部门电话 private String vcDeptDesc; //部门简介 private List<TEmployee> employees; //部门所属员工 public Integer getIDeptId() { return IDeptId; } public void setIDeptId(Integer deptId) { IDeptId = deptId; } public String getVcDeptCode() { return vcDeptCode; } public void setVcDeptCode(String vcDeptCode) { this.vcDeptCode = vcDeptCode; } public String getVcDeptName() { return vcDeptName; } public void setVcDeptName(String vcDeptName) { this.vcDeptName = vcDeptName; } public String getVcDeptAddress() { return vcDeptAddress; } public void setVcDeptAddress(String vcDeptAddress) { this.vcDeptAddress = vcDeptAddress; } public String getVcDeptTelphone() { return vcDeptTelphone; } public void setVcDeptTelphone(String vcDeptTelphone) { this.vcDeptTelphone = vcDeptTelphone; } public String getVcDeptDesc() { return vcDeptDesc; } public void setVcDeptDesc(String vcDeptDesc) { this.vcDeptDesc = vcDeptDesc; } public List<TEmployee> getEmployees() { return employees; } public void setEmployees(List<TEmployee> employees) { this.employees = employees; } }
5.创建 com.dbke.hrms.ibatis.dao 并创建 数据库dao接口 TDeptDao.java:
package com.dbke.hrms.ibatis.dao; import java.util.List; import com.dbke.hrms.ibatis.domain.TDept; public interface TDeptDao { /** * 查找所有的部门 * @return */ public List<TDept> findAllDept(); /** * 根据部门Id 查找特定部门 * @param deptId * @return */ public TDept findDeptById(Integer deptId); /** * 根据部门名称 查找特定部门 * @param deptName * @return */ public TDept findDeptByName(String deptName); /** * 根据部门编号 查找特定部门 * @param deptCode * @return */ public TDept findDeptByCode(String deptCode); /** * 新插入一个部门 * @param dept * @return */ public Integer insertDept(TDept dept); }
6.在com.dbke.hrms.ibatis.dao.impl 实现这个接口,TDeptDaoImpl.java:
package com.dbke.hrms.ibatis.dao.impl; import java.util.List; import com.dbke.hrms.ibatis.dao.TDeptDao; import com.dbke.hrms.ibatis.domain.TDept; import org.springframework.dao.DataAccessException; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; public class TDeptDaoImpl extends SqlMapClientDaoSupport implements TDeptDao { @SuppressWarnings("unchecked") @Override public List<TDept> findAllDept() { // TODO Auto-generated method stub return (List<TDept>)getSqlMapClientTemplate().queryForList("findDeptById"); } @Override public TDept findDeptById(Integer deptId) throws DataAccessException { // TODO Auto-generated method stub return (TDept)getSqlMapClientTemplate().queryForObject("findDeptById",deptId); } @Override public Integer insertDept(TDept dept) { // TODO Auto-generated method stub return (Integer)getSqlMapClientTemplate().insert("insertDept", dept); } @Override public TDept findDeptByName(String deptName) { // TODO Auto-generated method stub return (TDept)getSqlMapClientTemplate().queryForObject("findDeptByName",deptName); } @Override public TDept findDeptByCode(String deptCode) { // TODO Auto-generated method stub return (TDept)getSqlMapClientTemplate().queryForObject("findDeptByDeptCode",deptCode); } }