配置文件写完,应该填充项目的内容了。
这里的话,是准备做一个比较简单的登录程序把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)
这一排是事务的,一开始可以不用写,准确的说是下面这个注册方法就是测试事务的,对登录功能无影响。
这里引用别的博主的:
扫描二维码关注公众号,回复:
906734 查看本文章
在接口前面标上@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,然后就可以测试方法了。
如果我的内容在哪里有问题,欢迎私信指正。