springmvc+mybatis高效接口编程
2016-07-26 18:13
676 查看
这边记录一套比较高效的基础接口编程,在springmvc+mybatis架构下的基础接口,结合了所有的增删改查,节省很多代码的书写,使代码更加简洁明了,结合上泛型的使用。
1.BaseDao接口,结合泛型
2.与mybatis.xml文件对应的mapper,因为集成BaseDao所以具备增删改查,在mapper.xml中要与BaseDao的增删改查的方法对应
3.业务基础接口
4.业务基础接口的抽象实现类,实现了业务接口的共有接口,并且有一个抽象方法获取对应mapper的接口,实现抽象接口
5.真正业务的实现类,继承抽象业务类并且实现业务接口
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; } }
相关文章推荐
- MAC系统里JDK版本切换
- springMVC 基础注意
- IO流4(补充
- 160726Java学习
- Struts2之文件上传
- Javaweb学习总结(四)--eclipse中使用github之public key的生成和设置
- java copyOnWrite
- Selenium java mac 自动化测试
- spring aop expression支持多个表达式配置
- java删除文件夹
- Java transient关键字使用小记
- eclipse中本地一个项目引用另一个项目的方法
- 序列化Serializable
- spring整合hibernate扫描多个不同包下的实体类
- 对象序列化
- java过滤敏感词实现字符串替换功能
- Javaweb学习总结(三)--Eclipse中导入github上的项目
- Demo_java_集合Collection
- 【javase复习】## day1 标识符、常量、变量、运算符 ##
- Java使用stringTemplate导出excel