通用mapper、分页助手的BaseService

依赖:

<mapper-version>2.3.4</mapper-version>
		<pagehelper-version>3.7.5</pagehelper-version>
		<jsqlparser-version>0.9.1</jsqlparser-version>

<!-- 分页插件依赖 -->
			<dependency>
				<groupId>com.github.pagehelper</groupId>
				<artifactId>pagehelper</artifactId>
				<version>${pagehelper-version}</version>
			</dependency>
			<dependency>
				<groupId>com.github.jsqlparser</groupId>
				<artifactId>jsqlparser</artifactId>
				<version>${jsqlparser-version}</version>
			</dependency>
			<!-- 通用mapper -->
			<dependency>
				<groupId>com.github.abel533</groupId>
				<artifactId>mapper</artifactId>
				<version>${mapper-version}</version>
			</dependency>

mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 开启驼峰匹配 -->
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>
	
	<!-- <typeAliases>
		设置别名
		<package name="cn.itcast.usermanage.pojo" />
	</typeAliases> -->
	<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <property name="dialect" value="mysql"/>
        <!-- 该参数默认为false -->
        <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
        <property name="rowBoundsWithCount" value="true"/>
    </plugin>
    <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
		    <!--主键自增回写方法,默认值MYSQL,详细说明请看文档-->
		    <property name="IDENTITY" value="MYSQL"/>
		    <!--通用Mapper接口,多个通用接口用逗号隔开-->
		    <property name="mappers" value="com.github.abel533.mapper.Mapper"/>
	  </plugin>
</plugins>
</configuration>


BasePojo:

package com.taotao.manage.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;
    }
    
    

}

BaseService:

package com.taotao.manage.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.taotao.manage.pojo.BasePojo;

public abstract class BaseService<T extends BasePojo> {
    /**
     * 由子类实现该方法,返回具体的Mapper的实现类
     */
//    public abstract Mapper<T> getMapper();
    /**
     * 这样写是因为使用Spring4.x的新特性,根据泛型类型注入对象
     */
    @Autowired
    public Mapper<T> mapper;
    

    public Mapper<T> getMapper() {
        return mapper;
    }

    /**
     * 根据id查询数据
     * 
     * @param id
     * @return
     */
    public T queryById(Long id) {
        return this.mapper.selectByPrimaryKey(id);
    }

    /**
     * 查询所有数据
     * 
     * @return
     */
    public List<T> queryAll() {
        return this.mapper.select(null);
    }

    /**
     * 根据条件查询数据集合
     * 
     * @param t
     * @return
     */
    public List<T> queryByWhere(T t) {
        return this.mapper.select(t);
    }

    /**
     * 根据条件查询一条数据
     */
    public T queryOne(T t) {
        return this.mapper.selectOne(t);
    }

    /**
     * 分页查询数据
     */
    public PageInfo<T> queryPageListBywhere(T t, Integer page, Integer rows) {
        PageHelper.startPage(page, rows, true);// 设置分页参数
        // 查询数据
        List<T> lists = this.queryByWhere(t);
        return new PageInfo<T>(lists);
    }
    /**
     * 自定义查询条件,分页查询
     * @param example
     * @param page
     * @param rows
     * @return
     */
    public PageInfo<T> queryPageListByExample(Example example, Integer page, Integer rows) {
        PageHelper.startPage(page, rows, true);// 设置分页参数
        // 查询数据
        List<T> lists = this.mapper.selectByExample(example);
        return new PageInfo<T>(lists);
    }

    /**
     * 新增数据
     */
    public Integer save(T t) {
        t.setCreated(new Date());
        t.setUpdated(t.getCreated());
        return this.mapper.insert(t);
    }
    /**
     * 新增数据,使用不为null的字段
     */
    public Integer saveSelective(T t) {
        t.setCreated(new Date());
        t.setUpdated(t.getCreated());
        return this.mapper.insertSelective(t);
    }
    /**
     * 更新数据
     */
    public Integer update(T t) {
        t.setUpdated(new Date());
        return this.mapper.updateByPrimaryKey(t);
    }
    /**
     * 更新数据,使用不为null的字段
     */
    public Integer updateSelective(T t) {
        t.setUpdated(new Date());
        return this.mapper.updateByPrimaryKeySelective(t);
    }
    /**
     * 根据id删除一条记录
     */
    public Integer deleteById(Long id){
        return this.mapper.deleteByPrimaryKey(id);
    }
    /**
     * 根据ids批量删除
     */
    public Integer deleteByIds(List<Object> ids,String property,Class<T> clazz){
        Example example=new Example(clazz);
        example.createCriteria().andIn(property, ids);
        return this.mapper.deleteByExample(example);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值