springmvc+mybatis高效接口编程

这边记录一套比较高效的基础接口编程,在springmvc+mybatis架构下的基础接口,结合了所有的增删改查,节省很多代码的书写,使代码更加简洁明了,结合上泛型的使用。

1.BaseDao接口,结合泛型

import java.io.Serializable;
import java.util.List;

/**
 * 数据库操作基类,如果需要调用下列方法,需要在对应的mapper.xml配置
 */
public interface BaseDao<T> 
{
    /**
     * 插入
     * @param t 插入的对象
     * @return 插入数据条数
     */
    public int insert(T t);

    /**
     * 批量插入
     * @param list 数据列表
     * @return 插入数据条数
     */
    public int insertList(List<T> list);
    
    /**
     * 修改
     * @param t 修改的数据
     * @return 修改的数据条数
     */
    public int update(T t);

    /**
     * 删除
     * @param id 数据标识
     * @return 删除的数据条数
     */
    public int delete(Serializable id);

    /**
     * 通过条件查询记录数
     * @param t 查询条件
     * @return 记录数
     */
    public int getTotal(T t);

    /**
     * 通过条件查询数据列表
     * @param t 查询条件
     * @return 数据列表
     */    
    public List<T> getList(T t);

    /**
     * 查询所有数据
     * @return 数据列表
     */
    public List<T> getAll();
    
    /**
     * 通过id查询数据
     * @param id 数据标识
     * @return 数据对象
     */
    public T get(Serializable id);

    public List<T> findList(T entity);
}


2.与mybatis.xml文件对应的mapper,因为集成BaseDao所以具备增删改查,在mapper.xml中要与BaseDao的增删改查的方法对应

/**
 *2016年5月16日
 *
 **/
@MyBatisRepository
public interface BankaAdMapper extends BaseDao<BankaAd> {
	
	List<BankaAd> getAdListByPara(BankaAd req);
	
	/*后台相关*/
	int updateAdShelve(BankaAd bankaAd);	
}

3.业务基础接口

import java.io.Serializable;
import java.util.List;

/**
 * 为service实现提供的基础接口
 * @author mark
 * @date 2015年5月27日
 */
public interface BaseService<T>
{
    /**
     * 插入
     * @param t 插入的对象
     * @return 插入数据条数
     */
    public int insert(T t);

    /**
     * 批量插入
     * @param list 数据列表
     * @return 插入数据条数
     */
    public void insertList(List<T> list);
    
    /**
     * 修改
     * @param t 修改的数据
     * @return 修改的数据条数
     */
    public void update(T t);

    /**
     * 删除
     * @param id 数据标识
     * @return 删除的数据条数
     */
    public void delete(Serializable id);

    /**
     * 通过条件查询记录数
     * @param t 查询条件
     * @return 记录数
     */
    public int getTotal(T t);

    /**
     * 查询所有数据
     * @return 数据列表
     */
    public List<T> getAll();
    
    /**
     * 通过条件查询数据列表
     * @param t 查询条件
     * @return 数据列表
     */    
    public List<T> getList(T t);

    /**
     * 通过id查询数据
     * @param id 数据标识
     * @return 数据对象
     */
    public T get(Serializable id);
    
    public List<T> findList(T entity);

}

4.业务基础接口的抽象实现类,实现了业务接口的共有接口,并且有一个抽象方法获取对应mapper的接口,实现抽象接口
import java.io.Serializable;
import java.util.List;

import org.springframework.transaction.annotation.Transactional;

/**
 * service抽象类,实现部分公共方法
 * 
 */
public abstract class BaseServiceImpl<T> implements BaseService<T>
{
    /**
     * 抽象方法,必须实现,返回DAO实例
     * @return DAO实例
     */
    public abstract BaseDao<T> getDao();

    @Override
    @Transactional(readOnly = false)
    public int insert(T t)	
    {
        return getDao().insert(t);
    }
    
    @Override
    @Transactional(readOnly = false)
    public void insertList(List<T> list)
    {
    	getDao().insertList(list);
    }
    
    @Override
    @Transactional(readOnly = false)
    public void update(T t)
    {
    	getDao().update(t);
    }

    @Override
    @Transactional(readOnly = false)
    public void delete(Serializable id) 
    {
        getDao().delete(id);
    }

    @Override
    @Transactional(readOnly = true)
    public int getTotal(T t) 
    {
        return getDao().getTotal(t);
    }

    @Override
    @Transactional(readOnly = true)
    public List<T> getAll()
    {
        return getDao().getAll();
    }
    
    @Override
    @Transactional(readOnly = true)
    public List<T> getList(T t)
    {
        return getDao().getList(t);
    }
    
    @Override
    @Transactional(readOnly = true)
    public List<T> findList(T entity){
    	return getDao().findList(entity);
    }

    @Override
    @Transactional(readOnly = true)
    public T get(Serializable id) 
    {
        return getDao().get(id);
    }

}

5.真正业务的实现类,继承抽象业务类并且实现业务接口

/**
 *2016年5月23日
 *
 **/
@Service("BankaAdService")
public class BankaAdServiceImpl extends BaseServiceImpl<BankaAd> implements
		BankaAdService {
	
	@Autowired
	private BankaAdMapper adMapper;

	@Override
	public BaseDao<BankaAd> getDao() {
		return adMapper;
	}

}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值