開(kāi)發(fā)環(huán)境:
System:Windows xp
IDE:eclipse Java EE 3.6
Database:MySQL
開(kāi)發(fā)依賴(lài)庫(kù):
JavaEE5、Spring 3.0.5、Mybatis 3.0.4、myBatis-spring-1.0、junit4.8.1
一、準(zhǔn)備工作:
1、
下載jar包Spring3 jar下載:
MyBatis3 jar 下載:
http://www.mybatis.org/java.html
junit 4 jar下載:
http://www.junit.org/
2、 添加的jar包如下:
3、創(chuàng)建mysql的數(shù)據(jù)庫(kù)表,步驟如下:
1、進(jìn)入mysql的安裝路徑,假設(shè)在:C:\Program Files\MySQL\MySQL Server 5.1\bin; 2、輸入命令:mysql -uroot -p,enter,輸入密碼:admin; 3、mysql>use test; 5、mysql>grant all privileges on test.* to test@'localhost' identified by 'test'; 6、mysql>flush privileges; 4、mysql> create table account_bak(account_id int not null auto_increment, username varchar(20), password varchar(20), create_time datetime, primary key(account_id)); |
二、spring 和mybatis整合
1、在eclipse中創(chuàng)建一個(gè)java project,目錄結(jié)構(gòu)如下:
這是一個(gè)標(biāo)準(zhǔn)的maven工程的目錄結(jié)構(gòu),下面逐一介紹上圖涉及到的文件。
2、創(chuàng)建mybatis的配置文件mybatis.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>
</configuration> |
3、創(chuàng)建spring的配置文件spring.xml JavaBean(Model、Entity)相關(guān)類(lèi)、及mybatis 的mapper對(duì)象
javabean:
package com.glen.model; import java.io.Serializable; public class Account implements Serializable { private static final long serialVersionUID = -7970848646314840509L; public Account() { |
account-resultMap.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="accountMap"> <resultMap type="com.hoo.entity.Account" id="accountResultMap"> <id property="accountId" column="account_id"/> <result property="username" column="username"/> <result property="password" column="password"/> <result property="createTime" column="create_time"/> </resultMap> </mapper>
|
|
5、創(chuàng)建dao:
package com.glen.dao; import javax.annotation.Resource; import org.apache.ibatis.session.SqlSession; import com.glen.model.Account;
private SqlSessionFactory sessionFactory; public AccountDao() { } public SqlSessionFactory getSessionFactory() { public void setSessionFactory(SqlSessionFactory sessionFactory) { public void insert(Account account) { SqlSession session = sessionFactory.openSession();
|
package com.glen.service; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.glen.dao.AccountDao;
/** public void setAccountDao(AccountDao accountDao) {
|
Ok,至此spring 和mybatis就整合好了。
三、用junit進(jìn)行單元測(cè)試
在src/test/java目錄下,創(chuàng)建一個(gè)測(cè)試類(lèi):TestAccountService:
package com.glen.service; import static org.junit.Assert.assertEquals; import org.apache.log4j.Logger; import com.glen.model.Account;
@Before } // 創(chuàng)建一個(gè)帳戶(hù) } |
測(cè)試通過(guò),顯示如下界面:
四、使用spring的標(biāo)記來(lái)注入對(duì)象
如上所述,我們?cè)趕pring的配置文件spring.xml中,定義了兩個(gè)業(yè)務(wù)模塊相關(guān)的bean,accountDao和accountService,但是在實(shí)際項(xiàng)目中,這樣的dao和service會(huì)非常多,如果每個(gè)都要這樣定義,會(huì)造成配置文件的體積過(guò)大,可閱讀性和可維護(hù)性都會(huì)變差。
那么如何對(duì)spring.xml進(jìn)行瘦身呢?有兩種方案,第一種方案是分模塊開(kāi)發(fā),對(duì)于模塊內(nèi)部的bean,寫(xiě)在對(duì)應(yīng)模塊內(nèi)部的spring配置文件中,如:spring-account.xml;第二種方案,就是使用spring的標(biāo)記。下面我想說(shuō)說(shuō)的就是,用spring的標(biāo)記:@Service @Repository @Resource來(lái)實(shí)現(xiàn)對(duì)象的注入。在上面這個(gè)例子基礎(chǔ)上,做以下步驟的修改:
1、注釋掉spring.xml中的兩個(gè)bean:accountDao和accountService的定義
<!-- |
2、在AccountDao類(lèi)中添加兩個(gè)標(biāo)記:@Repository和 @Resource,
@Repository @Resource |
3、在AccountService類(lèi)中添加兩個(gè)標(biāo)記:@Service 和 @Resource:
@Service |
4、運(yùn)行TestAccountService,同樣測(cè)試通過(guò)。
其實(shí)iBatis只有兩種配置文件,一個(gè)是iBatis的Configuration文件,另一個(gè)就是mapper文件。如果和spring集成的話,Configuration文件在很多情況下都是可以為空的。至于我文中提到的mapper文件,有兩個(gè),其實(shí)也可以合并到一個(gè)文件中的,我這樣做的目的是,將一些可重用的mapper信息獨(dú)立出來(lái)。
我按照他的配置做的 做不出來(lái)。。