前言
在日常的开发中,我们写的大部分程序以及系统,基本都需要增删改除以及分页的功能。而正因为大部分的功能都具有重复性,很多人在写代码的过程中,基本在做这些功能的时候,把重复的代码简单地复制粘贴就完事了。其实,不知道大家有没有想过。把些功能的实现做为一个工具包的样子,这样把它加入我们自建的仓库中,是不是就可以免除了重复写的过程,当我们以后再写的时候,直接写接口就可以了,这是不是比以前重复写简单很多了,好了,不逼逼,我们正式进入话题。
1、创建maven项目,在maven项目的pom.xml 中配置相应的依赖,例如我建立了一个如下图的项目
2、配置相应的pom.xml 文件
这个可以直接复制下面的文件里面的依赖到自己的pom.xml文件里面就可以了。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qf.2002</groupId>
<artifactId>qf-base</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
</configuration>
</plugin>
</plugins>
</build>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
</dependencies>
</project >
3、建立如下的项目文件
4、具体的代码
IBaseDao.java
package com.qf.base.dao;
import java.util.List;
public interface IBaseDao<T> {
/**
* 插入操作
* @param t 被插入的对象
* @return 影响的行数
*/
public int insert(T t);
public int update(T t);
/**
* 删除操作
* @param id 被删除的id
* @return 响应的行数
*/
public int delete(Integer id);
/**
* 根据id查询对象
* @param id 查询的id
* @return 对象
*/
public T selectById(Integer id);
/**
* 分页的擦洗混
* @return 集合
*/
public List<T> selectList();
/**
* 查询全部
* @param <T>
* @return
*/
<T> List<T> getAll();
}
Page.java
package com.qf.base.entity;
import lombok.Data;
@Data
public class Page {
private Integer pageNum = 1;
private Integer pageSize = 5;
}
BaseServiceImpl.java
package com.qf.base.service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.qf.base.dao.IBaseDao;
import com.qf.base.entity.Page;
import java.util.List;
public abstract class BaseServiceImpl<T> implements IBaseService<T> {
// 这个baseDao需要子类来来实例化
protected abstract IBaseDao<T> baseDao();// ?需不需要实例化
@Override
public int insert(T t) {
return baseDao().insert(t);
}
@Override
public int update(T t) {
return baseDao().update(t);
}
@Override
public int delete(Integer id) {
return baseDao().delete(id);
}
@Override
public T selectById(Integer id) {
return baseDao().selectById(id);
}
@Override
public PageInfo<T> selectPage(Page page) {
// 1.开启分页查询
PageHelper.startPage(page.getPageNum(),page.getPageSize());
// 2.查询当前页的数据
List<T> pageHub = baseDao().selectList();
// 3.把page转成PageInfo
return new PageInfo<>(pageHub);
}
@Override
public List<T> getALl() {
return baseDao().getAll();
}
}
IBaseService
package com.qf.base.service;
import com.github.pagehelper.PageInfo;
import com.qf.base.entity.Page;
import java.util.List;
public interface IBaseService<T> {
public int insert(T t);
public int update(T t);
public int delete(Integer id);
public T selectById(Integer id);
public PageInfo<T> selectPage(Page page);
public List<T> getALl();
}