我是靠谱客的博主 负责夏天,最近开发中收集的这篇文章主要介绍基于mybatis自定义统一增删改查接口实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1,定义一个service接口

/**
* Service 基础接口,其他 Service 接口 请继承该接口
*/
public interface Service<T, K> {
void save(T model);//持久化
void save(List<T> models);//批量持久化
void deleteById(K id);//通过主鍵刪除
void deleteByIds(String ids);//批量刪除 eg:ids -> “1,2,3,4”
void update(T model);//更新
T findById(K id);//通过ID查找
T findBy(String fieldName, Object value) throws TooManyResultsException; //通过Model中某个成员变量名称(非数据表中column的名称)查找,value需符合unique约束
List<T> findByIds(String ids);//通过多个ID查找//eg:ids -> “1,2,3,4”
List<T> findByCondition(Condition condition);//根据条件查找
List<T> findAll();//获取所有
}

 

2.定义基于通用MyBatis Mapper插件的Service接口的实现

/**
* 基于通用MyBatis Mapper插件的Service接口的实现
*/
public abstract class AbstractService<T, K> implements Service<T, K> {
@Autowired
protected Mapper<T> mapper;
private Class<T> modelClass;
// 当前泛型真实类型的Class
public AbstractService() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
modelClass = (Class<T>) pt.getActualTypeArguments()[0];
}
public void save(T model) {
mapper.insertSelective(model);
}
public void save(List<T> models) {
mapper.insertList(models);
}
public void deleteById(K id) {
mapper.deleteByPrimaryKey(id);
}
public void deleteByIds(String ids) {
mapper.deleteByIds(ids);
}
public void update(T model) {
mapper.updateByPrimaryKeySelective(model);
}
public T findById(K id) {
return mapper.selectByPrimaryKey(id);
}
@Override
public T findBy(String fieldName, Object value) throws TooManyResultsException {
try {
T model = modelClass.newInstance();
Field field = modelClass.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(model, value);
return mapper.selectOne(model);
} catch (ReflectiveOperationException e) {
throw new ServiceException(CommonCode.SYSTEM_ERROR, e);
}
}
public List<T> findByIds(String ids) {
return mapper.selectByIds(ids);
}
public List<T> findByCondition(Condition condition) {
return mapper.selectByCondition(condition);
}
public List<T> findAll() {
return mapper.selectAll();
}
}

 

3,封装查询条件

package com.deer.wms.project.seed.core.service;
/**
* 查询条件
*
* Created by Floki on 2017/9/30.
*/
public abstract class QueryCriteria {
private Integer wareId;
private String wareCode;
private Integer userId;
public Integer getWareId() {
return wareId;
}
public void setWareId(Integer wareId) {
this.wareId = wareId;
}
public String getWareCode() {
return wareCode;
}
public void setWareCode(String wareCode) {
this.wareCode = wareCode;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
/**
* 页码
*/
private Integer pageNum =1;
/**
* 每页显示的条数
*/
private Integer pageSize =199999;
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
}

 

最后

以上就是负责夏天为你收集整理的基于mybatis自定义统一增删改查接口实现的全部内容,希望文章能够帮你解决基于mybatis自定义统一增删改查接口实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部