ibatis+spring+struts 環境配置

ibatis+spring+struts環境配置

步驟:
一、新建工程,添加ibatis、spring和struts的jars;
二、數據庫設計.
三、POJO類.
四、pojo類配置文件編寫
五、ibatis主配置文件編寫【主配置文件只剩下sqlMap了】
六、dao接口和接口實現
七、service接口和接口實現
八、struts action實現及struts-config.xml配置
九、spring配置文件的內容【牽扯到ibatis和struts的整合】
十、測試

 

 

一、新建工程,添加ibatis、spring和struts的jars;

二、數據庫設計.

      mysql數據庫:

Sql代碼 複製代碼
  1. use ibatis;   
  2. drop table if exists user;   
  3.   
  4. create table if not exists  user(   
  5.        ID tinyint auto_increment,   
  6.        LOGIN_NAME varchar(10) not null,   
  7.        PASS_WORD varchar(15) not null,          
  8.        QX varchar(10) default 'guest' not null ,   
  9.        MEMO text,          
  10.                  
  11.        primary key (ID)   
  12. )   
  13. type=innodb   
  14. comment="user info";   
  15.   
  16. insert into user(LOGIN_NAME,PASS_WORD,QX) values('leh','888','admin');   
  17. insert into user(LOGIN_NAME,PASS_WORD) values('lek','888');   
  18.   
  19. commit;  
use ibatis;
drop table if exists user;

create table if not exists  user(
       ID tinyint auto_increment,
       LOGIN_NAME varchar(10) not null,
       PASS_WORD varchar(15) not null,       
       QX varchar(10) default 'guest' not null ,
       MEMO text,       
              
       primary key (ID)
)
type=innodb
comment="user info";

insert into user(LOGIN_NAME,PASS_WORD,QX) values('leh','888','admin');
insert into user(LOGIN_NAME,PASS_WORD) values('lek','888');

commit;

 數據源的配置

1)、配置文件db.properties (位置:resources/properties/db.properties,這裏resources和src是一類文件)

Xml代碼 複製代碼
  1. driver=com.mysql.jdbc.Driver   
  2. url=jdbc\:mysql\://localhost\:3306/ibatis   
  3. username=root  
  4. password=54321  
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/ibatis
username=root
password=54321

 

2)、註冊數據源到spring

Xml代碼 複製代碼
  1. !-- spring load dataSource configuration property file -->  
  2. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  3.         <property name="locations">  
  4.             <list>  
  5.                 <value>properties/database.properties</value>  
  6.             </list>  
  7.         </property>  
  8.     </bean>  
  9.        
  10. <!-- dataSource -->  
  11.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  12.         <property name="driverClassName" value="${driver}" />  
  13.         <property name="url" value="${url}" />  
  14.         <property name="username" value="${username}" />  
  15.         <property name="password" value="${password}" />  
  16.     </bean>  
!-- spring load dataSource configuration property file -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>properties/database.properties</value>
			</list>
		</property>
	</bean>
	
<!-- dataSource -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${driver}" />
		<property name="url" value="${url}" />
		<property name="username" value="${username}" />
		<property name="password" value="${password}" />
	</bean>

 

 

三、POJO類.

      本例是User實例類:

Java代碼 複製代碼
  1. package com.leadtone.ibatis.domain;   
  2.   
  3. import java.io.Serializable;   
  4.   
  5. public class User implements Serializable{   
  6.        
  7.     private int id;   
  8.     private String name;   
  9.     private String password;   
  10.     private String qx;   
  11.     private String memo;   
  12.        
  13.     public int getId() {   
  14.         return id;   
  15.     }   
  16.                /**  
  17.      *setter和getter方法省略   
  18.            */  
package com.leadtone.ibatis.domain;

import java.io.Serializable;

public class User implements Serializable{
	
	private int id;
	private String name;
	private String password;
	private String qx;
	private String memo;
	
	public int getId() {
		return id;
	}
               /**
	 *setter和getter方法省略	
           */

  

四、pojo類配置文件編寫

      本例是User.xml:(位置:com.leadtone.sqlmap.User.xml)

Xml代碼 複製代碼
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3. <!DOCTYPE sqlMap         
  4.     PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"         
  5.     "http://ibatis.apache.org/dtd/sql-map-2.dtd">  
  6.   
  7. <sqlMap namespace="User">  
  8.   
  9.     <typeAlias alias="user" type="com.leadtone.ibatis.domain.User"/>  
  10.   
  11.     <resultMap class="user" id="UserResult">  
  12.         <result property="id" column="ID"/>      
  13.         <result property="name" column="LOGIN_NAME"/>    
  14.         <result property="password" column="PASS_WORD"/>     
  15.         <result property="qx" column="QX"/>      
  16.         <result property="memo" column="MEMO"/>      
  17.     </resultMap>  
  18.        
  19.     <!-- query all Users -->  
  20.     <select id="selectAllUsers" resultMap="UserResult">  
  21.         select * from user   
  22.     </select>  
  23.        
  24.     <!-- query user by id -->  
  25.     <select id="selectUserById" parameterClass="int" resultMap="UserResult">  
  26.         select ID,LOGIN_NAME,PASS_WORD,QX,MEMO from user where ID=#id#   
  27.     </select>  
  28.        
  29.     <!-- query user by user -->  
  30.     <select id="selectUserByUser2" parameterClass="map" resultMap="UserResult">  
  31.         select ID,LOGIN_NAME,PASS_WORD,QX,MEMO from user where LOGIN_NAME=#name# and PASS_WORD=#password#   
  32.     </select>  
  33.        
  34.        
  35.     <select id="selectUserByUser" parameterClass="user" resultMap="UserResult">  
  36.         select ID,LOGIN_NAME,PASS_WORD,QX,MEMO from user where LOGIN_NAME=#name# and PASS_WORD=#password#   
  37.     </select>  
  38.        
  39.     <select id="selectUsersByName" parameterClass="String" resultMap="UserResult">  
  40.         select ID,LOGIN_NAME,PASS_WORD,QX,MEMO from user where sname like '%$name$%'   
  41.     </select>  
  42.     <!--     
  43.     <insert id="addUser" parameterClass="User">  
  44.         insert into user(ID,LOGIN_NAME,PASS_WORD,QX,MEMO ) values(#id#,#name#,#birth#,#score#)   
  45.     </insert>  
  46.     -->  
  47.        
  48.     <update id="updateUser" parameterClass="User">  
  49.         update user set LOGIN_NAME=#name#,PASS_WORD=#password#,QX=#qx#,memo=#memo# where  ID=#id#   
  50.     </update>  
  51.        
  52.     <delete id="deleteUser" parameterClass="int">  
  53.         delete from user where ID=#id#   
  54.     </delete>  
  55.   
  56. </sqlMap>  
<?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.leadtone.ibatis.domain.User"/>

	<resultMap class="user" id="UserResult">
		<result property="id" column="ID"/>	
		<result property="name" column="LOGIN_NAME"/>	
		<result property="password" column="PASS_WORD"/>	
		<result property="qx" column="QX"/>	
		<result property="memo" column="MEMO"/>	
	</resultMap>
	
	<!-- query all Users -->
	<select id="selectAllUsers" resultMap="UserResult">
		select * from user
	</select>
	
	<!-- query user by id -->
	<select id="selectUserById" parameterClass="int" resultMap="UserResult">
		select ID,LOGIN_NAME,PASS_WORD,QX,MEMO from user where ID=#id#
	</select>
	
	<!-- query user by user -->
	<select id="selectUserByUser2" parameterClass="map" resultMap="UserResult">
		select ID,LOGIN_NAME,PASS_WORD,QX,MEMO from user where LOGIN_NAME=#name# and PASS_WORD=#password#
	</select>
	
	
	<select id="selectUserByUser" parameterClass="user" resultMap="UserResult">
		select ID,LOGIN_NAME,PASS_WORD,QX,MEMO from user where LOGIN_NAME=#name# and PASS_WORD=#password#
	</select>
	
	<select id="selectUsersByName" parameterClass="String" resultMap="UserResult">
		select ID,LOGIN_NAME,PASS_WORD,QX,MEMO from user where sname like '%$name$%'
	</select>
	<!--  
	<insert id="addUser" parameterClass="User">
		insert into user(ID,LOGIN_NAME,PASS_WORD,QX,MEMO ) values(#id#,#name#,#birth#,#score#)
	</insert>
	-->
	
	<update id="updateUser" parameterClass="User">
		update user set LOGIN_NAME=#name#,PASS_WORD=#password#,QX=#qx#,memo=#memo# where  ID=#id#
	</update>
	
	<delete id="deleteUser" parameterClass="int">
		delete from user where ID=#id#
	</delete>

</sqlMap>

 

 

五、ibatis主配置文件編寫【主配置文件只剩下sqlMap了,事務和數據源都交給spring進行配置和管理】

      本例爲sql-map-config.xml:(位置:)

Xml代碼 複製代碼
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE sqlMapConfig         
  3.     PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"         
  4.     "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">  
  5. <sqlMapConfig>  
  6.      <sqlMap resource="com/leadtone/ibatis/sqlmap/User.xml"/>  
  7. </sqlMapConfig>  
<?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>
     <sqlMap resource="com/leadtone/ibatis/sqlmap/User.xml"/>
</sqlMapConfig>

 六、dao接口和接口實現

    1)、本例爲UserDao:

Java代碼 複製代碼
  1. package com.leadtone.ibatis.dao;   
  2.   
  3. import java.util.List;   
  4. import com.leadtone.ibatis.domain.User;   
  5.   
  6. public interface IUserDao {   
  7.     public List<User> queryAllUsers();   
  8.     public User queryUserById(int id);   
  9.     public User queryUserByUser(User user);    
  10.     public List<User> queryUserByName(String name);   
  11.        
  12.     public void addUser(User user);   
  13.     public void addUserBySequence(User user);   
  14.        
  15.     public void updateUser(User user);   
  16.        
  17.     public void deleteUser(int id);   
  18. }  
package com.leadtone.ibatis.dao;

import java.util.List;
import com.leadtone.ibatis.domain.User;

public interface IUserDao {
	public List<User> queryAllUsers();
	public User queryUserById(int id);
	public User queryUserByUser(User user);	
	public List<User> queryUserByName(String name);
	
	public void addUser(User user);
	public void addUserBySequence(User user);
	
	public void updateUser(User user);
	
	public void deleteUser(int id);
}

 

2)、實現類UserDaoImpl:

Java代碼 複製代碼
  1. package com.leadtone.ibatis.dao.ibatis;   
  2.   
  3. import java.util.List;   
  4. import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;   
  5. import com.leadtone.ibatis.dao.IUserDao;   
  6. import com.leadtone.ibatis.domain.User;   
  7.   
  8. public class UserDaoImpl extends SqlMapClientDaoSupport implements IUserDao {   
  9.   
  10.     //注意這裏的SqlMapClient接口的聲明和下面的static靜態代碼都不需要了,   
  11.   
  12.   
  13.   
  14.                 // 因爲這裏繼承了spring提供的ibatis模板template類SqlMapClientDaoSupport,不是用原生的SqlMapClient   
  15.   
  16.   
  17.                    
  18.                  //private static SqlMapClient sqlMapClient=null;   
  19.     /*  
  20.     static{  
  21.         Reader reader=null;  
  22.         try {  
  23.             reader=Resources.getResourceAsReader("com/leadtone/ibatis/sqlmap/SqlMapConfig.xml");  
  24.             sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);  
  25.               
  26.             reader.close();  
  27.         } catch (IOException e) {  
  28.             e.printStackTrace();  
  29.         }  
  30.           
  31.     }  
  32.     */  
  33.     public void addUser(User user) {   
  34.         getSqlMapClientTemplate().insert("addUser", user);   
  35.     }   
  36.   
  37.     public User queryUserByUser(User user) {   
  38.         System.out.println("---UserDaoImpl---");   
  39.         return (User) this.getSqlMapClientTemplate().queryForObject("selectUserByUser", user);   
  40.            
  41.     }   
  42. /*  
  43. * 這裏主要演示一個模擬用戶登錄系統驗證的操作,主要用了queryUserByUser(User user)方法  
  44. */  
  45. }  
package com.leadtone.ibatis.dao.ibatis;

import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.leadtone.ibatis.dao.IUserDao;
import com.leadtone.ibatis.domain.User;

public class UserDaoImpl extends SqlMapClientDaoSupport implements IUserDao {

	//注意這裏的SqlMapClient接口的聲明和下面的static靜態代碼都不需要了,



                // 因爲這裏繼承了spring提供的ibatis模板template類SqlMapClientDaoSupport,不是用原生的SqlMapClient


                
                 //private static SqlMapClient sqlMapClient=null;
	/*
	static{
		Reader reader=null;
		try {
			reader=Resources.getResourceAsReader("com/leadtone/ibatis/sqlmap/SqlMapConfig.xml");
			sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
			
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	*/
	public void addUser(User user) {
		getSqlMapClientTemplate().insert("addUser", user);
	}

	public User queryUserByUser(User user) {
		System.out.println("---UserDaoImpl---");
		return (User) this.getSqlMapClientTemplate().queryForObject("selectUserByUser", user);
		
	}
/*
* 這裏主要演示一個模擬用戶登錄系統驗證的操作,主要用了queryUserByUser(User user)方法
*/
}

 3)、在spring配置文件中配置這個bean

 

Xml代碼 複製代碼
  1. <!--sqlMapClient  -->  
  2.     <bean id="<SPAN style="COLOR: #000000">sqlMapClient </SPAN>class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  3.         <property name="configLocation" value="sqlmap/sql-map-config.xml"/>  
  4.         <property name="dataSource" ref="dataSource" />  
  5.     </bean>  
  6.   
  7. <!-- validate loginUser -->  
  8.     <!-- dao -->  
  9.     <bean id="userDao" class="com.leadtone.ibatis.dao.ibatis.UserDaoImpl">  
  10.           <property name="sqlMapClient" ref="<SPAN style="COLOR: #000000">sqlMapClient </SPAN>"></property>  
  11.     </bean>  
<!--sqlMapClient  -->
	<bean id="sqlMapClient " class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation" value="sqlmap/sql-map-config.xml"/>
		<property name="dataSource" ref="dataSource" />
	</bean>

<!-- validate loginUser -->
	<!-- dao -->
	<bean id="userDao" class="com.leadtone.ibatis.dao.ibatis.UserDaoImpl">
	      <property name="sqlMapClient" ref="sqlMapClient "></property>
	</bean>

 

七、service接口和接口實現

 1)IUserLoginService接口

Java代碼 複製代碼
  1. package com.leadtone.ibatis.service;   
  2.   
  3. import com.leadtone.ibatis.domain.User;   
  4.   
  5. public interface IUserLoginService {   
  6.     public boolean isLoginUser(User user);   
  7. }  
package com.leadtone.ibatis.service;

import com.leadtone.ibatis.domain.User;

public interface IUserLoginService {
	public boolean isLoginUser(User user);
}

 

 2)UserLoginSerivceImpl實現類

Java代碼 複製代碼
  1. package com.leadtone.ibatis.service.impl;   
  2.   
  3. import com.leadtone.ibatis.dao.IUserDao;   
  4. import com.leadtone.ibatis.domain.User;   
  5. import com.leadtone.ibatis.service.IUserLoginService;   
  6.   
  7. public class UserLoginServiceImpl implements IUserLoginService {   
  8.   
  9.     private IUserDao userDao;   
  10.   
  11.     public IUserDao getUserDao() {   
  12.         return userDao;   
  13.     }   
  14.        
  15.     public void setUserDao(IUserDao userDao) {   
  16.         this.userDao = userDao;   
  17.     }   
  18.     public boolean isLoginUser(User user) {   
  19.         return null!=userDao.queryUserByUser(user)?true:false;   
  20.     }   
  21.   
  22. }  
package com.leadtone.ibatis.service.impl;

import com.leadtone.ibatis.dao.IUserDao;
import com.leadtone.ibatis.domain.User;
import com.leadtone.ibatis.service.IUserLoginService;

public class UserLoginServiceImpl implements IUserLoginService {

	private IUserDao userDao;

	public IUserDao getUserDao() {
		return userDao;
	}
	
	public void setUserDao(IUserDao userDao) {
		this.userDao = userDao;
	}
	public boolean isLoginUser(User user) {
		return null!=userDao.queryUserByUser(user)?true:false;
	}

}

 

 3)在spring中註冊這個bean

Xml代碼 複製代碼
  1. <!-- service -->  
  2. <bean id="userLoginService" class="com.leadtone.ibatis.service.impl.UserLoginServiceImpl">  
  3.         <property name="userDao" ref="userDao"></property>  
  4. </bean>  
<!-- service -->
<bean id="userLoginService" class="com.leadtone.ibatis.service.impl.UserLoginServiceImpl">
        <property name="userDao" ref="userDao"></property>
</bean>

  

八、struts action實現及struts-config.xml配置(牽扯到struts和spring的整合)

1)action:

Java代碼 複製代碼
  1. package com.leadtone.web.struts.action;   
  2.   
  3. import javax.servlet.http.HttpServletRequest;   
  4. import javax.servlet.http.HttpServletResponse;   
  5.   
  6. import org.apache.struts.action.Action;   
  7. import org.apache.struts.action.ActionForm;   
  8. import org.apache.struts.action.ActionForward;   
  9. import org.apache.struts.action.ActionMapping;   
  10.   
  11. import com.leadtone.ibatis.
發佈了54 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章