通用Service

本文介绍了一个通用Service层的设计方案,包括基本操作如增删改查等,并实现了分页查询等功能。该设计方案通过抽象基类提供了一套通用的方法,简化了业务逻辑的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.lyt.usermanage.pojo;

import java.util.Date;

public abstract class BasePojo {

    private Date created;
    private Date updated;
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    public Date getUpdated() {
        return updated;
    }
    public void setUpdated(Date updated) {
        this.updated = updated;
    }



}
package com.lyt.usermanage.service;

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.mapper.Mapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lyt.usermanage.pojo.BasePojo;

/**
 * 抽取出一些基本的操作
 * @author Administrator
 *
 */
public abstract class BaseService<T extends BasePojo> {


    @Autowired
    private Mapper<T> mapper;

    /**
     * 定义一个抽象方法,获取mapper,由子类去完成
     * @return
     */
//  public abstract Mapper<T> mapper;

    public T queryById(Long id){
        return this.mapper.selectByPrimaryKey(id);
    }
    /**
     * 查询所有对象
     * @return
     */
    public List<T> queryAll(){
        return this.mapper.select(null);
    }

    /**
     * 根据条件查询唯一的一条记录
     * @return
     */
    public T queryOne(T record){
        return this.mapper.selectOne(record);
    }
    /**
     * 根据条件查询list数据
     * @param record
     * @return
     */
    public List<T> queryListByWhere(T record){
        return this.mapper.select(record);
    }

    /**
     * 根据条件查询分页数据
     * @param record
     * @return
     */
    public PageInfo<T> queryPageListByWhere(T record , Integer pageNum , Integer pageSize){
        PageHelper.startPage(pageNum, pageSize);//开启分页
        List<T> list = this.mapper.select(record);//正常查询数据
        PageInfo<T> pageInfo = new PageInfo<T>(list);//构建page信息
        return pageInfo;
    }
    public Integer save(T record){
        //把创建时间,和修改时间初始化进去。
        record.setCreated(new Date());//
        record.setUpdated(record.getCreated());//
        return this.mapper.insert(record);

    }
    /**
     * 修改对象,如果属性是null,也进行修改
     * @param record
     * @return
     */
    public Integer update(T record){
        record.setUpdated(new Date());
        return this.mapper.updateByPrimaryKey(record);
    }
    /**
     * 修改对象,如果属性是null,则不进行修改
     * @param record
     * @return
     */
    public Integer updateSelective(T record){
        record.setCreated(null);//强制把创建时间设置成null,不让修改
        record.setUpdated(new Date());
        return this.mapper.updateByPrimaryKeySelective(record);
    }
    public Integer deleteById(Long id){
        return this.mapper.deleteByPrimaryKey(id);
    }
    /**
     * 根据ids 删除多个对象
     * @param clazz ,实体对应的class
     * @param property 实体类中主键属性名
     * @param ids 要删除的主键的值
     * @return
     */
    public Integer deleteByIds(Class<T> clazz , String property,List<Object> ids){
        Example example = new Example(clazz);
        //第一个参数,实体类的属性
        example.createCriteria().andIn(property, ids);
        return this.mapper.deleteByExample(example);
    }
    /**
     * 根据条件删除数据
     * @param record
     * @return
     */
    public Integer deleteByWhere(T record){
        return this.mapper.delete(record);
    }

}

抽取service中的一些通用方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值