BaseService和其实现类

BaseService和其实现类

开发工具与关键技术:Eclipse、java
作者:梁添荣
撰写时间:2020-05-08

在service层,我们经常会写基本的增删查改方法,但有很多模块都有类似的写法,所以,抽取常用的增删查改BaseService接口,再实现该接口为BaseServiceImpl,通过service层的实现类继承BaseServiceImpl,就有了各个增删查改的方法了,只要继承后按:shift+alt+s键,
选择Override…开头的选项,再选择对应的方法提取出来,提取出来后,在方法前加
Bean.set(“bean”),即可使用对应的方法,ps:bean指的是注解写的bean名,例:
@Service(“attClassesService”)
Bean名为attClassesService,

BaseService代码如下:
package com.gx.commom; import java.io.Serializable;
import java.util.List;
import com.gx.vo.SelectOption;

public interface BaseService <Model, PK extends Serializable>{

//==========ProjectUtil拓展功能↓
//ps:用到自己的vo类SelectOption;

/**单表分页查询/模糊查询,like不为空或不是null,则是模糊查询*/
List<Model> selectSingleTableOrLike(PK startIndex,PK pageSize,String like);

/**单表查询总条数,当like不为空或不是null,则是模糊查询*/
int totalRowsSingleTable(String like);

/**连表分页查询/模糊查询,,当like不为空或不是null,则是模糊查询*/
List<Model> selectMultilistOrLike(PK startIndex,PK pageSize,String like);

/**连表查询总条数,当like不为空或不是null,则是模糊查询*/
int totalRowsMultilist(String like);

/**新增,若实体类record中属性的值null,则该属性会插入数据库*/
int insert(Model record);

/**新增,若实体类record中属性的值null,则该属性不会插入数据库*/
int insertSelective(Model record);

/**修改,若实体类record中属性的值null,则该属性会插入数据库*/
int updateByPrimaryKey(Model record);

/**修改,若实体类record中属性的值null,则该属性不会插入数据库*/
int updateByPrimaryKeySelective(Model record);

/**根据id删除*/
int deleteByKey(PK id);

/**根据id查询*/
Model selectByKey(PK id);

/**绑定下拉框*/
List<SelectOption> selectOption();

/**条件查找用户*/
Model selectByName(String name);

List<Model> selectSingleTable();

//==========ProjectUtil拓展功能↑
}

BaseServiceImpl代码如下:
package com.gx.commom.impl; import java.util.List;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import com.gx.commom.BaseService;
import com.gx.commom.MyBatisBaseDao; import com.gx.exception.MessageException; import com.gx.vo.SelectOption;
public abstract class BaseServiceImpl implements BaseService<T, Integer> {

//==========ProjectUtil拓展功能↓
/**说明:
 * 该功能时基于MyBatisBaseDao完成的,并用到自己的vo类SelectOption;
 * 
 * 使用时请创建带有参数的对象,该参数必须是已经存在的mapper/dao名,
 * 并把该名的第一个字母改小写。
 */

protected ThreadLocal<String> bean = new ThreadLocal<String>(); 	
private ThreadLocal<MyBatisBaseDao<T, Integer>> threadLocalBaseDao = new ThreadLocal<MyBatisBaseDao<T, Integer>>();
private MyBatisBaseDao<T, Integer> baseDao;

private void getBean() { 		if(bean.get()==null) { 			throw new MessageException(403, "非法访问"); 		}
	WebApplicationContext act = ContextLoader.getCurrentWebApplicationContext(); 		
	baseDao =(MyBatisBaseDao<T, Integer>) act.getBean(bean.get()); 		//System.err.println("bean是多少:"+bean.get()+";对象是多少:"+baseDao); 		threadLocalBaseDao.set(baseDao);
}

/**单表分页查询/模糊查询,like不为空或不是null,则是模糊查询*/
@Override
public List<T> selectSingleTableOrLike(Integer startIndex, Integer pageSize, String like) {
	getBean();
	return threadLocalBaseDao.get().selectSingleTableByPage(startIndex, pageSize,like);
}

/**获取单表查询的总条数*/
@Override
public int totalRowsSingleTable(String like) {
	getBean();
	return threadLocalBaseDao.get().totalRowsSingleTable(like);
}

/**连表分页查询/模糊查询,,当like不为空或不是null,则是模糊查询*/
@Override
public List<T> selectMultilistOrLike(Integer startIndex, Integer pageSize, String like) {
	getBean();
	return threadLocalBaseDao.get().selectMultilist(startIndex, pageSize, like);
}

/**获取多表查询的总条数*/
@Override
public int totalRowsMultilist(String like) {
	getBean();
	return threadLocalBaseDao.get().totalRowsMultilist(like);
}

/**新增,若实体类record中属性的值null,则该属性会插入数据库*/
@Override
public int insert(T record) {
	getBean();
	return threadLocalBaseDao.get().insert(record);
}

/**新增,若实体类record中属性的值null,则该属性不会插入数据库*/
@Override
public int insertSelective(T record) {
	getBean();
	return threadLocalBaseDao.get().insertSelective(record);
}

/**修改,若实体类record中属性的值null,则该属性会插入数据库*/
@Override
public int updateByPrimaryKey(T record) {
	getBean();
	return threadLocalBaseDao.get().updateByPrimaryKey(record);
}

/**修改,若实体类record中属性的值null,则该属性不会插入数据库*/
@Override
public int updateByPrimaryKeySelective(T record) {
	getBean();
	return threadLocalBaseDao.get().updateByPrimaryKeySelective(record);
}

/**根据id删除*/
@Override
public int deleteByKey(Integer id) {
	getBean();
	return threadLocalBaseDao.get().deleteByPrimaryKey(id);
}

/**根据id查询*/
@Override
public T selectByKey(Integer id) {
	getBean();
	return (T) threadLocalBaseDao.get().selectByPrimaryKey(id);
}

/**绑定下拉框*/
@Override
public List<SelectOption> selectOption() {
	getBean();
	return threadLocalBaseDao.get().SelectOption();
}

/**条件查找用户*/
@Override
public T selectByName(String name) {
	getBean();
	return threadLocalBaseDao.get().selectByName(name);
}

/**单表查询所有*/
@Override
public List<T> selectSingleTable() {
	getBean();
	return threadLocalBaseDao.get().selectSingleTable();
}

//==========ProjectUtil拓展功能↑

}

猜你喜欢

转载自blog.csdn.net/weixin_44619313/article/details/106000577
今日推荐