SSM整合(三):编写Service类和Dao

配置文件写完,应该填充项目的内容了。

这里的话,是准备做一个比较简单的登录程序把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,然后就可以测试方法了。

如果我的内容在哪里有问题,欢迎私信指正。

 




猜你喜欢

转载自blog.csdn.net/wzlhlhhh/article/details/80278864