service和serviceImpl抽取

33 篇文章 0 订阅
32 篇文章 0 订阅

BaseService.java

package cn.buaa.scm.service;

import cn.buaa.scm.entity.Page;

public interface BaseService<T> {

	// 插入数据
	public int insert(T entity) throws Exception;

	// 修改单个对象
	public int update(T entity) throws Exception;

	// 删除单个对象
	public int delete(T entity) throws Exception;

	// 通过主键(数组)批量删除数据
	public int deleteList(String[] pks) throws Exception;

	// 查询单个对象
	public T select(T entity) throws Exception;

	// 通过关键字分页查询
	public Page<T> selectPage(Page<T> page);

	// 多条件分页查询
	public Page<T> selectPageUseDyc(Page<T> page);

}
BaseServiceimpl

package cn.buaa.scm.service.impl;

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;

import cn.buaa.scm.dao.AccountMapper;
import cn.buaa.scm.dao.BaseMapper;
import cn.buaa.scm.dao.SupplierMapper;
import cn.buaa.scm.entity.Page;
import cn.buaa.scm.service.BaseService;

public class BaseServiceImpl<T> implements BaseService<T> {

	protected BaseMapper<T> baseMapper;

	@Autowired
	protected SupplierMapper supplierMapper;

	@Autowired
	protected AccountMapper accountMapper;

	@PostConstruct
	// 在构造方法后,初化前执行
	private void initBaseMapper() throws Exception {
		// 完成以下逻辑,需要对研发本身进行命名与使用规范
		// this关键字指对象本身,这里指的是调用此方法的实现类(子类)
		System.out.println("=======this :" + this);
		System.out.println("=======父类基本信息:" + this.getClass().getSuperclass());
		System.out.println("=======父类和泛型的信息:" + this.getClass().getGenericSuperclass());

		ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
		// 获取第一个参数的class
		Class clazz = (Class) type.getActualTypeArguments()[0];
		System.out.println("=======class:" + clazz);
		// 转化为属性名(相关的Mapper子类的引用名)Supplier supplierMapper
		String localField = clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1)
				+ "Mapper";
		System.out.println("=======localField:" + localField);
		// getDeclaredField:可以使用于包括私有、默认、受保护、公共字段,但不包括继承的字段
		Field field = this.getClass().getSuperclass().getDeclaredField(localField);
		System.out.println("=======field:" + field);
		System.out.println("=======field对应的对象:" + field.get(this));
		Field baseField = this.getClass().getSuperclass().getDeclaredField("baseMapper");

		System.out.println("=======baseField:" + baseField);
		System.out.println("=======baseField对应的对象:" + baseField.get(this));
		// field.get(this)获取当前this的field字段的值。例如:Supplier对象中,baseMapper所指向的对象为其子类型SupplierMapper对象,子类型对象已被spring实例化于容器中
		baseField.set(this, field.get(this));
		System.out.println("========baseField对应的对象:" + baseMapper);

	}

	@Override
	public int insert(T entity) throws Exception {
		// TODO Auto-generated method stub
		return baseMapper.insert(entity);
	}

	@Override
	public int update(T entity) throws Exception {
		// TODO Auto-generated method stub
		return baseMapper.update(entity);
	}

	@Override
	public int delete(T entity) throws Exception {
		// TODO Auto-generated method stub
		return baseMapper.delete(entity);
	}

	@Override
	public int deleteList(String[] pks) throws Exception {
		// TODO Auto-generated method stub
		return baseMapper.deleteList(pks);
	}

	@Override
	public T select(T entity) {
		// TODO Auto-generated method stub
		return baseMapper.select(entity);
	}

	@Override
	public Page<T> selectPage(Page<T> page) {
		page.setList(baseMapper.selectPageList(page));
		page.setTotalRecord(baseMapper.selectPageCount(page));
		return page;
	}

	@Override
	public Page<T> selectPageUseDyc(Page<T> page) {
		// TODO Auto-generated method stub
		page.setList(baseMapper.selectPageListUseDyc(page));
		page.setTotalRecord(baseMapper.selectPageCountUseDyc(page));
		return page;
	}
}



### 回答1: Service 是一种设计模式,主要用于将业务逻辑从控制器或其他组件中分离出来。它通常是一个接口,定义了与业务相关的操作。 ServiceImplService 的一个具体实现类,实现了 Service 接口中定义的方法。 ### 回答2: serviceserviceImpl是在软件开发中常见的两个概念。 Service(服务)是一种面向业务逻辑的接口,用于定义一组操作或功能。它通常是在领域驱动设计(DDD)模式中用于划分业务逻辑的边界,以保持领域模型的纯粹性。Service将复杂的业务逻辑封装在一起,并且通常是由多个Repository(仓库)进行组合协作来实现具体的功能。Service负责调用Repository提供的方法,并对数据进行处理和组装,以满足具体的业务需求。 ServiceImplService实现)是Service接口的具体实现类。它实现了Service接口定义的一组操作或功能,并负责具体的业务逻辑的实现。ServiceImpl通常包含了Service接口中定义的方法,并可以根据具体的需求来编写具体的业务逻辑代码。在ServiceImpl中,我们可以调用Repository提供的方法来获取数据,并根据业务需求进行处理。这样可以有效地将业务逻辑与数据访问逻辑分离开来,提高代码的可维护性和可测试性。 综上所述,Service是定义一组操作或功能的接口,负责封装复杂的业务逻辑,而ServiceImplService接口的具体实现类,负责实现具体的业务逻辑。通过使用ServiceServiceImpl的组合,可以更好地封装业务逻辑,提高代码的可维护性和可测试性。 ### 回答3: serviceserviceimpl是软件开发中常用的两个类。它们通常在面向对象的编程语言中使用,如Java。 首先,service是一个接口(interface),负责定义业务逻辑的方法。它提供了一种抽象,用于表示某个特定功能或行为的集合。service中的方法通常是具有高层次的抽象和复杂性的,用于处理业务逻辑,并且可能会与多个数据访问层(如数据库)进行交互。这个接口在整个应用程序的不同层(如控制器、数据访问层)之间提供了一种规范化的交互方式。 而serviceimplservice接口的具体实现类。它实现了service接口中定义的方法,即具体地实现了业务逻辑。serviceimpl类通常包含了具体的业务处理逻辑,如数据的处理、计算或验证等操作。serviceimpl类通常会使用其他的类(如实体类、工具类等)来完成这些业务逻辑。 使用serviceserviceimpl的好处是将应用程序的不同层进行解耦,使得每一层只需要关注自己的业务,而不需要了解其他层的具体实现。这样可以提高代码的可维护性和可测试性,也方便进行代码的复用和扩展。 总结来说,service是对业务逻辑进行抽象的接口,而serviceimplservice接口的具体实现类,负责实现具体的业务逻辑。它们在软件开发中起到了分离关注点、提高代码可维护性和可测试性的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值