SSM整合(三):編寫Service類和Dao
阿新 • • 發佈:2018-12-25
配置檔案寫完,應該填充專案的內容了。
這裡的話,是準備做一個比較簡單的登入程式把SSM給整合了。
step3:
我們先理一下思路。
1.建立person類來代表一個使用者(已做)
2.建立一個LoginService介面
3.實現一個LoginService介面
4.建立一個PersonDao
*5.編寫PersonDao對應的Mapper
這些步驟裡面,mapper將留在下一個步驟說。
其中PersonDao也是為mybatis做準備,這是持久層的Dao。
接著來寫下檔案
建立一個LoginService介面
package com.ssmlogin.service; import com.ssmlogin.bean.Person; /* * 2018年5月9日14:36:51 * 登入類,主要實現登入功能 */ public interface LoginService { boolean Login(Person p); boolean Register(Person p) throws Exception; }
實現一個LoginService介面
package com.ssmlogin.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.ssmlogin.bean.Person; import com.ssmlogin.dao.PersonDao; import com.ssmlogin.exception.Abrupt; @Service("MyService") public class LoginServiceImp implements LoginService { @Autowired private PersonDao pdao; public void setPdao(PersonDao pdao) { this.pdao = pdao; } @Transactional public boolean Login(Person p) { // TODO 自動生成的方法存根 Person pn = pdao.selectPersonByNAP(p.getUesrname(), p.getPassword()); System.out.println(pn); if(pn != null) return true; else return false; } @Transactional(isolation=Isolation.DEFAULT, propagation=Propagation.REQUIRED, rollbackFor=Exception.class) public boolean Register(Person p) throws Exception { // TODO 自動生成的方法存根 // 測試事務 pdao.insertPerson(p); // 丟擲異常,這裡應該不會執行的 if(1==1) throw new Abrupt("意外中斷"); return false; } }
這裡就很有趣了,因為@Service("MyService")這個我之前沒用過,不過這個應該是在spring容器裡註冊的意思。
除此之外@Autowired我也沒用過。。。
@Transactional(isolation=Isolation.DEFAULT, propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
這一排是事務的,一開始可以不用寫,準確的說是下面這個註冊方法就是測試事務的,對登入功能無影響。
這裡引用別的博主的:
在介面前面標上@Autowired和@Qualifier註釋使得介面可以被容器注入,當介面存在兩個實現類的時候必須指定其中一個來注入,使用實現類首字母小寫的字串來注入。
@Service服務層元件,用於標註業務層元件,表示定義一個bean,自動根據bean的類名例項化一個首寫字母為小寫的bean,例如Chinese例項化為chinese,如果需要自己改名字則:@Service("你自己改的bean名")。
建立一個PersonDao
package com.ssmlogin.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import com.ssmlogin.bean.Person;
// person類的dao
public interface PersonDao{
// 查詢所有使用者
List<Person> selectPerson();
// 增加使用者
void insertPerson(Person p);
// 刪除使用者
void deletePersonById(@Param("id") int id);
// 查詢指定使用者
Person selectPersonByNAP(@Param("username") String username, @Param("password") String password);
}
這裡其實只用到了第二個和第四個,其他的是練一練寫檔案,也沒有測試
到這裡,這個專案如果不是web專案,寫個test檔案就可以跑起來了,ApplicationContext獲取容器,新建service,然後就可以測試方法了。
如果我的內容在哪裡有問題,歡迎私信指正。