SpringBoot+SpringCloud+vue+Element开发项目——业务功能实现

vue

一、工程结构规划

        jansens-common:公共代码模块、主要放置一些工具类。

        jansens-core:核心业务代码模块,主要封装公共业务模块。

        jansens-admin:后台管理模块,包含用户、角色、菜单管理,权限管理等。

        jansens-pom:聚合模块,仅为简化打包,一键执行打包所有模块。

新建空的maven工程   jansens-common、jansens-core、jansens-pom并且添加依赖

           jansens-core下的pom.xml内添加jansens-common为dependency依赖,然后执行编译打包命令。

           jansens-admin下的pom.xml内添加jansens-core为dependency依赖,然后执行编译打包命令。

           jansens-pom下的pom.xml内添加 jansens-admin、 jansens-admin、jansens-core为dependency依赖,然后执行编译打包命令。

二、业务代码封装

        

CurdService.java

import com.read.core.page.PageRequest;

import com.read.core.page.PageResult;

import java.sql.SQLException;

import java.util.List;

public interface CurdService<T> {

/**

* 保存操作

* @param record

* @return

*/

int save(T record);

/**

* 删除操作

* @param record

* @return

*/

int delete(T record);

/**

* 批量删除操作

* @param record

* @return

*/

int delete(List<T> record);

/**

* 根据ID查询

* @param id

* @return

*/

T findById(Long id);

/**

* 分页查询

* @param pageRequest

* @return

*/

PageResult findPage(PageRequest pageRequest);

}

  分页请求封装   PageRequest.java    Param.java

public class PageRequest {

/**

* 当前页码

*/

private int pageNum = 1;

/**

* 每页数量

*/

private int pageSize = 10;

/**

* 查询参数

*/

private List<Param> params = new ArrayList<Param>();

public int getPageNum() {

return pageNum;

}

public void setPageNum(int pageNum) {

this.pageNum = pageNum;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public List<Param> getParams() {

return params;

}

}

/**

* 分页参数

*/

public class Param {

private String name;

private String value;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

}

分页结果封装    PageResult.java

public class PageResult {

/**

* 当前页码

*/

private int pageNum;

/**

* 每页数量

*/

private int pageSize;

/**

* 记录总数

*/

private long totalSize;

/**

* 页码总数

*/

private int totalPages;

/**

* 分页数据

*/

private List<?> content;

public int getPageNum() {

return pageNum;

}

public void setPageNum(int pageNum) {

this.pageNum = pageNum;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public long getTotalSize() {

return totalSize;

}

public void setTotalSize(long totalSize) {

this.totalSize = totalSize;

}

public int getTotalPages() {

return totalPages;

}

public void setTotalPages(int totalPages) {

this.totalPages = totalPages;

}

public List<?> getContent() {

return content;

}

public void setContent(List<?> content) {

this.content = content;

}

}

分页助手封装   MybatisPageHelper.java

/**

* MyBatis 分页查询助手

*/

public class MybatisPageHelper {

public static final String findPage = "findPage";

/**

* 分页查询, 约定查询方法名为 “findPage”

* @param pageRequest 分页请求

* @param mapper Dao对象,MyBatis的 Mapper

* @return

*/

public static PageResult findPage(PageRequest pageRequest, Object mapper) {

return findPage(pageRequest, mapper, findPage);

}

/**

* 调用分页插件进行分页查询

* @param pageRequest 分页请求

* @param mapper Dao对象,MyBatis的 Mapper

* @param queryMethodName 要分页的查询方法名

* @param args 方法参数

* @return

*/

@SuppressWarnings({ "unchecked", "rawtypes" })

public static PageResult findPage(PageRequest pageRequest, Object mapper, String queryMethodName, Object... args) {

// 设置分页参数

int pageNum = pageRequest.getPageNum();

int pageSize = pageRequest.getPageSize();

PageHelper.startPage(pageNum, pageSize);

// 利用反射调用查询方法

Object result = ReflectionUtils.invoke(mapper, queryMethodName, args);

return getPageResult(pageRequest, new PageInfo((List) result));

}

/**

* 将分页信息封装到统一的接口

* @param pageRequest

* @return

*/

private static PageResult getPageResult(PageRequest pageRequest, PageInfo<?> pageInfo) {

PageResult pageResult = new PageResult();

pageResult.setPageNum(pageInfo.getPageNum());

pageResult.setPageSize(pageInfo.getPageSize());

pageResult.setTotalSize(pageInfo.getTotal());

pageResult.setTotalPages(pageInfo.getPages());

pageResult.setContent(pageInfo.getList());

return pageResult;

}

}

Http 结果封装   HttpResult.java

/**

* HTTP结果封装

*/

public class HttpResult {

private int code = 200;

private String msg;

private Object data;

public static HttpResult error() {

return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");

}

public static HttpResult error(String msg) {

return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);

}

public static HttpResult error(int code, String msg) {

HttpResult r = new HttpResult();

r.setCode(code);

r.setMsg(msg);

return r;

}

public static HttpResult ok(String msg) {

HttpResult r = new HttpResult();

r.setMsg(msg);

return r;

}

public static HttpResult ok(Object data) {

HttpResult r = new HttpResult();

r.setData(data);

return r;

}

public static HttpResult ok() {

return new HttpResult();

}

public int getCode() {

return code;

}

public void setCode(int code) {

this.code = code;

}

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public Object getData() {

return data;

}

public void setData(Object data) {

this.data = data;

}

}

/**

* HTTP结果封装

*/

public class HttpResult {

private int code = 200;

private String msg;

private Object data;

public static HttpResult error() {

return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");

}

public static HttpResult error(String msg) {

return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);

}

public static HttpResult error(int code, String msg) {

HttpResult r = new HttpResult();

r.setCode(code);

r.setMsg(msg);

return r;

}

public static HttpResult ok(String msg) {

HttpResult r = new HttpResult();

r.setMsg(msg);

return r;

}

public static HttpResult ok(Object data) {

HttpResult r = new HttpResult();

r.setData(data);

return r;

}

public static HttpResult ok() {

return new HttpResult();

}

public int getCode() {

return code;

}

public void setCode(int code) {

this.code = code;

}

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public Object getData() {

return data;

}

public void setData(Object data) {

this.data = data;

}

}

 三、MyBatis分页查询

在jansens-core下的pom.xml文件内添加分页插件依赖包

<!-- pagehelper -->

<dependency>

<groupId>com.github.pagehelper</groupId>

<artifactId>pagehelper-spring-boot-starter</artifactId>

<version>1.2.5</version>

</dependency>

在jansens-admin配置文件内容添加分页插件配置

# pagehelper

pagehelper:

helperDialect: mysql

reasonable: true

supportmethodsArguments: true

params: count=countSql

在DAO添加分页查询的方法

SysUserMapper.java

List<SysUser> findPage();

给SysUserMapper.xml添加查询的方法

SysUserMapper.xml

<select id="findPage" resultMap="BaseResultMap">

select

<include refid="Base_Column_List" />

from sys_user

</select>

服务层调用DAO层完成分页查询,让SysUserService继承CurdService接口。

SysUserService.java

public interface SysUserService extends CurdService<SysUser> {

/**

* 查找所有的用户

* @return

*/

List<SysUser> findAll();

}

SysUserServiceImpl.java

@Service

public class SysUserServiceImpl implements SysUserService {

@Autowired

private SysUserRoleMapper sysUserRoleMapper;

@Override

public PageResult findPage(PageRequest pageRequest) {

return MybatisPageHelper.findPage(pageRequest, sysUserMapper);

}

}

SysUserController.java

@RestController

@RequestMapping("user")

public class SysUserController {

@Autowired

private SysUserService sysUserService;

@PostMapping(value="/findPage")

public HttpResult findPage(@RequestBody PageRequest pageRequest) {

return HttpResult.ok(sysUserService.findPage(pageRequest));

}

}

 四、导出Excel报表

在jansens-common下的pom文件添加依赖包

<!-- poi -->

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-ooxml</artifactId>

<version>4.0.1</version>

</dependency>

SysUserService.java

/**

* 生成用户信息Excel文件

* @param pageRequest 要导出的分页查询参数

* @return

*/

File createUserExcelFile(PageRequest pageRequest);

SysUserServiceImpl.java

@Override

public File createUserExcelFile(PageRequest pageRequest) {

PageResult pageResult = findPage(pageRequest);

return createUserExcelFile(pageResult.getContent());

}

public static File createUserExcelFile(List<?> records) {

if (records == null) {

records = new ArrayList<>();

}

Workbook workbook = new XSSFWorkbook();

Sheet sheet = workbook.createSheet();

Row row0 = sheet.createRow(0);

int columnIndex = 0;

row0.createCell(columnIndex).setCellValue("No");

row0.createCell(++columnIndex).setCellValue("ID");

row0.createCell(++columnIndex).setCellValue("用户名");

row0.createCell(++columnIndex).setCellValue("昵称");

row0.createCell(++columnIndex).setCellValue("机构");

row0.createCell(++columnIndex).setCellValue("角色");

row0.createCell(++columnIndex).setCellValue("邮箱");

row0.createCell(++columnIndex).setCellValue("手机号");

row0.createCell(++columnIndex).setCellValue("状态");

row0.createCell(++columnIndex).setCellValue("头像");

row0.createCell(++columnIndex).setCellValue("创建人");

row0.createCell(++columnIndex).setCellValue("创建时间");

row0.createCell(++columnIndex).setCellValue("最后更新人");

row0.createCell(++columnIndex).setCellValue("最后更新时间");

for (int i = 0; i < records.size(); i++) {

SysUser user = (SysUser) records.get(i);

Row row = sheet.createRow(i + 1);

for (int j = 0; j < columnIndex + 1; j++) {

row.createCell(j);

}

columnIndex = 0;

row.getCell(columnIndex).setCellValue(i + 1);

row.getCell(++columnIndex).setCellValue(user.getId());

row.getCell(++columnIndex).setCellValue(user.getName());

row.getCell(++columnIndex).setCellValue(user.getNickName());

row.getCell(++columnIndex).setCellValue(user.getDeptName());

row.getCell(++columnIndex).setCellValue(user.getRoleNames());

row.getCell(++columnIndex).setCellValue(user.getEmail());

row.getCell(++columnIndex).setCellValue(user.getStatus());

row.getCell(++columnIndex).setCellValue(user.getAvatar());

row.getCell(++columnIndex).setCellValue(user.getCreateBy());

row.getCell(++columnIndex).setCellValue(DateTimeUtils.getDateTime(user.getCreateTime()));

row.getCell(++columnIndex).setCellValue(user.getLastUpdateBy());

row.getCell(++columnIndex).setCellValue(DateTimeUtils.getDateTime(user.getLastUpdateTime()));

}

return PoiUtils.createExcelFile(workbook, "download_user");

}

SysUserController.java

@PostMapping(value="/exportUserExcelFile")

public void exportUserExcelFile(@RequestBody PageRequest pageRequest,HttpServletResponse res) {

File file=sysUserService.createUserExcelFile(pageRequest);

FileUtils.downloadFile(res,file,file.getName());

}

工具类代码  jansens-common

PoiUtils.java

/**

* POI相关操作

*/

public class PoiUtils {

/**

* 生成Excel文件

* @param workbook

* @param fileName

* @return

*/

public static File createExcelFile(Workbook workbook, String fileName) {

OutputStream stream = null;

File file = null;

try {

file = File.createTempFile(fileName, ".xlsx");

stream = new FileOutputStream(file.getAbsoluteFile());

workbook.write(stream);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

IOUtils.closeQuietly(workbook);

IOUtils.closeQuietly(stream);

}

return file;

}

}

FileUtils.java

/**

* 文件相关操作

*/

public class FileUtils {

/**

* 下载文件

* @param response

* @param file

* @param newFileName

*/

public static void downloadFile(HttpServletResponse response, File file, String newFileName) {

try {

response.setHeader("Content-Disposition", "attachment; filename=" + new String(newFileName.getBytes("ISO-8859-1"), "UTF-8"));

BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());

InputStream is = new FileInputStream(file.getAbsolutePath());

BufferedInputStream bis = new BufferedInputStream(is);

int length = 0;

byte[] temp = new byte[1 * 1024 * 10];

while ((length = bis.read(temp)) != -1) {

bos.write(temp, 0, length);

}

bos.flush();

bis.close();

bos.close();

is.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

以上是 SpringBoot+SpringCloud+vue+Element开发项目——业务功能实现 的全部内容, 来源链接: utcz.com/z/377071.html

回到顶部