基于通用mapper的通用service

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_38861828/article/details/102692208

接口BaseService.java

package com.nongmall.manage.service;

import java.util.List;

import com.github.pagehelper.PageInfo;

public interface BaseService<T> {

	/**
	 * 根据id查询记录
	 * @param id
	 * @return
	 */
	T selectById(Long id);
	
	/**
	 * 查询所有的记录
	 * @return
	 */
	List<T> selectAll();

	/**
	 * 根据条件查询单条记录
	 * @param record
	 * @return
	 */
	T selectOne(T record);

	/**
	 * 根据条件查询多条记录
	 * @param record
	 * @return
	 */
	List<T> selectListByWhere(T record);

	/**
	 * 根据条件分页查询多条记录
	 * @param record
	 * @param page
	 * @param rows
	 * @return
	 */
	PageInfo<T> selectPageListByWhere(T record, Integer page, Integer rows);

	/**
	 * 添加所有字段
	 * @param record
	 * @return
	 */
	Integer add(T record);

	/**
	 * 更新
	 * @param record
	 * @return
	 */
	Integer updateSelective(T record);

	/**
	 * 根据id删除
	 * @param id
	 * @return
	 */
	Integer deleteById(Integer id);

	/**
	 * 
	 * @param clazz
	 * @param preporty
	 * @param values
	 * @return
	 */
	Integer deleteByPreportys(Class<T> clazz, String preporty, Object[] values);

	/**
	 * 根据条件删除记录
	 * @param record
	 * @return
	 */
	Integer deleteByWhere(T record);
}

实现类BaseServiceImp.java

package com.nongmall.manage.service.imp;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.github.abel533.entity.Example;
import com.github.abel533.entity.Example.Criteria;
import com.github.abel533.mapper.Mapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.nongmall.manage.service.BaseService;

public class BaseServiceImp<T> implements BaseService<T> {
	
	@Autowired
	private Mapper<T> mapper;

	@Override
	public T selectById(Long id) {
		return mapper.selectByPrimaryKey(id);
	}

	@Override
	public List<T> selectAll() {
		return mapper.select(null);
	}

	@Override
	public T selectOne(T record) {
		return mapper.selectOne(record);
	}

	@Override
	public List<T> selectListByWhere(T record) {
		return mapper.select(record);
	}

	@Override
	public PageInfo<T> selectPageListByWhere(T record, Integer page, Integer rows) {
		PageHelper.startPage(page, rows);
		List<T> list = mapper.select(record);
		return new PageInfo<T>(list);
	}

	@Override
	public Integer add(T record) {
		try {
			Method setCreated = record.getClass().getMethod("setCreated", Date.class);
			setCreated.invoke(record, new Date());
			
			Method getCreated = record.getClass().getMethod("getCreated");
			Date date = (Date) getCreated.invoke(record);
			
			Method setUpdated = record.getClass().getMethod("setUpdated", Date.class);
			setUpdated.invoke(record, date);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mapper.insert(record);
	}

	@Override
	public Integer updateSelective(T record) {
		try {
			Method setUpdated = record.getClass().getMethod("setUpdated", Date.class);
			setUpdated.invoke(record, new Date());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mapper.updateByPrimaryKeySelective(record);
	}

	@Override
	public Integer deleteById(Integer id) {
		return mapper.deleteByPrimaryKey(id);
	}

	@Override
	public Integer deleteByPreportys(Class<T> clazz, String preporty, Object[] values) {
		Example example = new Example(clazz);
		Criteria criteria = example.createCriteria();
		criteria.andIn(preporty, Arrays.asList(values));
		return mapper.deleteByExample(example);
	}

	@Override
	public Integer deleteByWhere(T record) {
		return mapper.delete(record);
	}

}

 

接口UserService.java

package com.nongmall.manage.service;

import com.nongmall.manage.pojo.User;

public interface UserService extends BaseService<User> {

}

实现类UserServiceImp.java

package com.nongmall.manage.service.imp;

import com.nongmall.manage.pojo.User;

@Service
public class UserServiceImp extends BaseServiceImp<User> implements UserService{

}

猜你喜欢

转载自blog.csdn.net/qq_38861828/article/details/102692208