您的位置:首页 > 编程语言 > Java开发

springmvc+mybatis高效接口编程

2016-07-26 18:13 676 查看
这边记录一套比较高效的基础接口编程,在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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息