配置文件写完,应该填充项目的内容了。
这里的话,是准备做一个比较简单的登录程序把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,然后就可以测试方法了。
如果我的内容在哪里有问题,欢迎私信指正。