注解版poi操作工具

*************************************优雅的分割线 **********************************

分享一波:程序员赚外快-必看的巅峰干货

如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程

请关注微信公众号:HB荷包
在这里插入图片描述
一个能让你学习技术和赚钱方法的公众号,持续更新
*************************************优雅的分割线 **********************************
SimpleExecutor
最近在搭公司新项目的架构,测试的过程中深感导出Excel极为不便,因此就产生了写一个通用导出工具类的想法。写完后经测试发现比较好用,因此将公司相关的代码移除,单独拿出来这个模块进行开源。

项目的GitHub地址:POI操作工具

如果您对本工具比较感兴趣,可以加入下面QQ群进行技术交流:781943947

使用方式:

创建数据库(这个操作就不贴代码了)

导入工程下db目录的数据库

创建类ApiLog(实际开发中换成自己的类),加上注解@Excel

@Data
public class ApiLog implements Serializable {private static final long serialVersionUID = -3286564461647015367L;/*** 日志id*/@Excel(name = "编号")private Integer logId;/*** 请求路径*/@Excel(name = "请求地址")private String logUrl;/*** 参数*/@Excel(name = "请求参数")private String logParams;/*** 访问状态,1正常0异常*/@Excel(name = "访问状态")private Integer logStatus;/*** 异常信息*/@Excel(name = "异常信息")private String logMessage;/*** 浏览器UA标识*/@Excel(name = "浏览器标识", autoSize = true)private String logUa;/*** 访问controller*/@Excel(name = "控制层")private String logController;/*** 请求方式,get、post等*/@Excel(name = "请求方式")private String logMethod;/*** 响应时间,单位毫秒*/@Excel(name = "响应时间", isStatistics = true)private Long logTime;/*** 请求ip*/@Excel(name = "请求ip")private String logIp;/*** 设备MAC*/@Excel(name = "设备号")private String logDevice;/*** 创建时间*/@Excel(name = "请求时间")private String createdDate;/*** 创建人*/private String createdBy;/*** 创建人姓名*/@Excel(name = "创建人", autoSize = true)private String createdName;/*** 返回值*/@Excel(name = "返回值")private String logResult;/*** 日志内容*/@Excel(name = "日志内容")private String logContent;/*** 日志类型  0:操作日志;1:登录日志;2:定时任务;*/private Integer logType;/*** 操作类型  1查询,2添加,3修改,4删除,5导入,6导出*/private Integer logOperateType;@Overridepublic String toString() {return "ApiLog{" +"logId=" + logId +", logUrl='" + logUrl + '\'' +", logParams='" + logParams + '\'' +", logStatus=" + logStatus +", logMessage='" + logMessage + '\'' +", logUa='" + logUa + '\'' +", logController='" + logController + '\'' +", logMethod='" + logMethod + '\'' +", logTime=" + logTime +", logIp='" + logIp + '\'' +", logDevice='" + logDevice + '\'' +", createdDate='" + createdDate + '\'' +", createdBy='" + createdBy + '\'' +", createdName='" + createdName + '\'' +", logResult='" + logResult + '\'' +", logContent='" + logContent + '\'' +", logType=" + logType +", logOperateType=" + logOperateType +'}';}
}

编写Mapper(Service就跳过了)

@Component
public interface ApiMapper {/*** 查询所有* @return*/List<ApiLog> findAll();}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gej.poi.mapper.ApiMapper"><!-- 注意:本内容仅限于风越云力内部传阅,禁止外泄以及用于其他的商业目 --><!-- 通用查询映射结果 --><resultMap id="BaseResultMap" type="com.gej.poi.pojo.ApiLog"><id column="log_id" property="logId"/><result column="log_url" property="logUrl"/><result column="log_params" property="logParams"/><result column="log_status" property="logStatus"/><result column="log_message" property="logMessage"/><result column="log_ua" property="logUa"/><result column="log_controller" property="logController"/><result column="log_method" property="logMethod"/><result column="log_time" property="logTime"/><result column="log_ip" property="logIp"/><result column="log_device" property="logDevice"/><result column="created_date" property="createdDate"/><result column="created_by" property="createdBy"/><result column="log_result" property="logResult"/><result column="created_name" property="createdName"/></resultMap><!-- 通用查询结果列 --><sql id="Base_Column_List">log_id, log_url, log_params, log_status, log_message, log_ua, log_controller, log_method, log_time, log_ip, log_device, created_date, created_name, log_result</sql><select id="findAll" resultMap="BaseResultMap">select * from sys_log_api</select></mapper>

编写测试类


@SpringBootTest
@RunWith(SpringRunner.class)
public class ExportTest {@Autowiredprivate ApiMapper apiMapper;/*** 导出测试* @throws Exception*/@Testpublic void testExportLog() throws Exception {List<ApiLog> list = apiMapper.findAll();Workbook workbook = new ExcelExportHandler().createSheet(new ExportParams("测试导出", "最新日志"), ApiLog.class, list);OutputStream outputStream = new FileOutputStream(new File("D:/测试.xlsx"));workbook.write(outputStream);}/*** 导入测试* @throws Exception*/@Testpublic void testImportLog() throws Exception {InputStream inputStream = new FileInputStream(new File("D:/测试.xlsx"));List<ApiLog> apiLogs = new ExcelImportHandler().importExcel(inputStream, ApiLog.class, new ImportParams());for (ApiLog apiLog : apiLogs) {System.out.println(apiLog);}}}

最后附上Excel注解的代码

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Excel {/*** 该列是否需要时间格式化*/boolean needFormat() default false;/*** 时间格式化*/String format() default "";/*** 导出时在excel中每个列的高度 单位为字符,一个汉字=2个字符*/double height() default 10;/*** 导出时的列名。不可重复*/String name();/*** 导出时在excel中每个列的宽 单位为字符,一个汉字=2个字符 如 以列名列内容中较合适的长度 例如姓名列6 【姓名一般三个字】* 性别列4【男女占1,但是列标题两个汉字】 限制1-255*/double width() default 10;/*** 是否自动统计数据,如果是统计,true的话在最后追加一行统计,把所有数据求和*/boolean isStatistics() default false;/*** 是否设置列宽自适应*/boolean autoSize() default false;}

*************************************优雅的分割线 **********************************

分享一波:程序员赚外快-必看的巅峰干货

如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程

请关注微信公众号:HB荷包
在这里插入图片描述
一个能让你学习技术和赚钱方法的公众号,持续更新
*************************************优雅的分割线 **********************************
SimpleExecutor

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kali Linux 2019.1 发布,Metasploit 更新到 5.0 版本

百度智能云 云生态狂欢季 热门云产品1折起>>> Kali Linux 2019.1 发布了&#xff0c;Kali 前身 BackTrack&#xff0c;它是一个基于 Debian 的 Linux 发行版&#xff0c;主要用于信息安全行业&#xff0c;其包含了一系列安全、渗透测试和取证工具。此版本 Linux 内核…

peewee mysql_scrapy中利用peewee插入Mysql

前两天老大布置一个任务&#xff0c;说爬下来的数据要存入数据库中&#xff0c;丢给我一个peewee&#xff0c;说用这个。当时的我两眼一抹黑&#xff0c;这是个什么东西呀&#xff0c;我知道scrapy的数据存入数据库是在pipelines中进行设置但是peewee是什么东西呢。经过两天不懈…

Java版数据结构与算法——线性表

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

基于 CODING 的 Spring Boot 持续集成项目

本文作者&#xff1a;CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI&#xff09;是一种软件开发实践&#xff0c;即团队开发成员经常集成他们的工作&#xff0c;通常每个成员每天至少集成一次&#xff0c;也就意味着每天可能会发生多次集成。每…

Mybatis组成部分

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

一年java工作经验-面试总结

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

linux mysql python包_03_mysql-python模块, linux环境下python2,python3的

---恢复内容开始---1、Python2 正常[rootIP ~]#pip install mysql-pythonDEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 wont be maintained after that date. A future version of pip will drop …

两年Java工作经验应该会些什么技术

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

centos 6 mysql 5.7.13 编译安装_Centos 6.5 下面 源码编译 安装 Mysql 5.7.13

安装软件依赖包yum -y install gcc gcc-c ncurses ncurses-devel cmake下载软件包cd /usr/local/srcwget https://downloads.mysql.com/archives/get/file/mysql-5.7.13.tar.gz --no-check-certificate下载 boost 库&#xff0c;MySQL 5.7.5 开始Boost库是必需的cd /usr/loca…

LeetCode 237. 删除链表中的节点(Python3)

题目&#xff1a; 请编写一个函数&#xff0c;使其可以删除某个链表中给定的&#xff08;非末尾&#xff09;节点&#xff0c;你将只被给定要求被删除的节点。 现有一个链表 -- head [4,5,1,9]&#xff0c;它可以表示为: 示例 1: 输入: head [4,5,1,9], node 5 输出: [4,1,9…

一年Java经验应该会些什么

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

mysql查询各类课程的总学分_基于jsp+mysql的JSP学生选课信息管理系统

运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。IDE环境&#xff1a; Eclipse,Myeclipse,IDEA都可以硬件环境&#xff1a; windows 7/8/10 2G内存以上(推荐4G&#xff0c;4G以上更好)可以实现&#xff1a; 学生&#xff0c;教师角色的…

三年java经验应该会什么?

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

python加法运算符可以用来连接字符串并生成新字符串_中国大学MOOCPython语言入门网课答案...

中国大学MOOCPython语言入门网课答案表达式int(40.5)的值为____________。表达式160.5的值为____________________。python程序只能使用源代码进行运行&#xff0c;不能打包成可执行文件。python语句list(range(1,10,3))执行结果为___________________。pip命令也支持扩展名为.…

全是满满的技术文档

*************************************话不多说-先上教程 ********************************** 完整躺赚教程(不需任何技术,照做就能赚钱):点击此处获取 提取码&#xff1a;6666 被动收入教程(需要一定的技术,会搭建服务器,会发布项目<教程里面会教你>):点击此处获取 提…

JavaScript面试的完美指南(开发者视角)

2019独角兽企业重金招聘Python工程师标准>>> 摘要&#xff1a; 面试季手册。 原文&#xff1a;javascript 面试的完美指南(开发者视角)作者&#xff1a;前端小智Fundebug经授权转载&#xff0c;版权归原作者所有。 为了说明 JS 面试的复杂性&#xff0c;首先&#x…

windows qt 不能debug_linux配置vlc-qt

vlc-qt 是基于vlc库&#xff0c;用于开发音频视频应用&#xff0c;性能优秀。vlc-qt/vlc-qt​github.com使用vlc-qt首先需要编译vlc-qt &#xff08;windows可以下载使用编译好的&#xff0c;但是只能用在release模式&#xff09;&#xff08;在windows系统中&#xff09;使用w…

idou老师教你学Istio 27:解读Mixer Report流程

1、概述 Mixer是Istio的核心组件&#xff0c;提供了遥测数据收集的功能&#xff0c;能够实时采集服务的请求状态等信息&#xff0c;以达到监控服务状态目的。 1.1 核心功能 •前置检查&#xff08;Check&#xff09;&#xff1a;某服务接收并响应外部请求前&#xff0c;先通过E…

mysql删除密码代码_mysql 用户新建、受权、删除、密码修改

mysql 用户新建、授权、删除、密码修改首先要声明一下&#xff1a;一般情况下&#xff0c;修改MySQL密码&#xff0c;授权&#xff0c;是需要有mysql里的root权限的。注&#xff1a;本操作是在WIN命令提示符下&#xff0c;phpMyAdmin同样适用。用户&#xff1a;phplamp 用户数…

KindEditor 上传漏洞致近百个党政机关网站遭植入

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; >>> 2月21日消息&#xff0c;近日&#xff0c;安恒明鉴网站安全监测平台和应急响应中心监测发现近百起党政机关网站被植入色情广告页面&#xff0c;分析发现被植入色情广告页面的网站都…