首页 文章 精选 留言 我的

精选列表

搜索[重复报告],共10010篇文章
优秀的个人博客,低调大师

易水组件 5.2.0 发布,告别单表 CURD 重复性代码

易水公共组件是基于springboot的高度封装的通用型组件,在对spring security和spring security oauth2高度可定制化的功能封装外,还支持第三方登录和sso单点登录功能,使用户能够快速开启QQ登录和微信登录能力,搭建属于自己的认证/授权中心。 此外,工具还提供各种常见的图形验证码、短信验证码和邮件验证码功能,并支持跨域设置和全局异常捕获功能,实现自定义异常信息提示。 另外,组件还包含swagger接口文档功能,支持一键导出离线接口使用文档。 最后,组件提供了大量丰富的配置属性,支持通过属性配置完成各项功能设置,真正实现零侵入、防止暴力破解的无缝接入功能。 在保证功能灵活可用的基础上,易水公共组件还针对国人的使用习惯进行了一些本地化配置,提供了详细完整的中文使用说明文档。总的来说,易水公共组件在保证单机应用的高效性能同时,还能支持分布式署环境,能自动识别单体应用还是集群应用,是目前主流的微服务开发过程中不可或缺的重要伙伴。 快速启动 在项目中加入以下依赖 <dependency> <groupId>com.yishuifengxiao.common</groupId> <artifactId>common-spring-boot-starter</artifactId> <version>5.2.0</version> </dependency> 易水组件已经发布到maven中央仓库,最新版本的依赖可参见https://mvnrepository.com/artifact/com.yishuifengxiao.common/common-spring-boot-starter。 在项目中引入上述依赖之后,就可以直接使用易水组件的相关功能了。 本次更新主要更新点如下: 数据库操作 例如操作数据库时再也不需要编写简单的CURD的操作代码,只需要在项目中加入以下代码即可操作数据库了: @Autowired private JdbcHelper jdbcHelper; 也可以使用静态工具类JdbcUtil对数据进行操作。 下面是数据库操作工具JdbcHelper的一些典型接口 /** * 根据主键从指定表查询一条数据 * * @param <T> POJO类 * @param clazz POJO类 * @param primaryKey 主键 * @return 查询到的数据 */ <T> T findByPrimaryKey(Class<T> clazz, Object primaryKey); /** * 查询所有符合条件的数据 * * @param <T> POJO类 * @param t 查询条件 * @return 符合条件的数据 */ <T> T findOne(T t); /** * 查询所有符合条件的数据 * * @param <T> POJO类 * @param t 查询条件 * @param order 排序条件 * @return 符合条件的数据 */ <T> List<T> findAll(T t, Order order); /** * 根据主键全属性更新方式更新一条数据 * * @param <T> POJO类 * @param t 待更新的数据 * @return 受影响的记录的数量 */ <T> int updateByPrimaryKey(T t); /** * 根据主键可选属性更新方式更新一条数据 * * @param <T> POJO类 * @param t 待更新的数据 * @return 受影响的记录的数量 */ <T> int updateByPrimaryKeySelective(T t); /** * 根据主键删除一条数据 * * @param <T> POJO类 * @param clazz 操作的对象 * @param primaryKey 主键值 * @return 受影响的记录的数量 */ <T> int deleteByPrimaryKey(Class<T> clazz, Object primaryKey); /** * 以全属性方式新增一条数据 * * @param <T> POJO类 * @param t 待新增的数据 * @return 受影响的记录的数量 */ <T> int insert(T t); /** * 以可选属性方式新增一条数据 * * @param <T> POJO类 * @param t 待新增的数据 * @return 受影响的记录的数量 */ <T> int insertSelective(T t);

优秀的个人博客,低调大师

代码神器:拒绝重复编码,这款IDEA插件了解一下

云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! Easycode是idea的一个插件,可以直接对数据的表生成entity、controller、service、dao、mapper无需任何编码,简单而强大。 1、安装(EasyCode) 我这里的话是已经那装好了。 建议大家在安装一个插件,叫做Lombok。 Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。出现的神奇就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。 2、建立数据库 -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL, `username` varchar(20) DEFAULT NULL, `sex` varchar(6) DEFAULT NULL, `birthday` date DEFAULT NULL, `address` varchar(20) DEFAULT NULL, `password` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; SET FOREIGN_KEY_CHECKS = 1; 3、在IDEA配置连接数据库 在这个之前,新建一个Springboot项目,这个应该是比较简单的。 建好SpringBoot项目之后,如下图所示,找到这个Database 按照如下图所示进行操作: 然后填写数据库名字,用户名,密码。点击OK即可。这样的话,IDEA连接数据库就完事了。 4、开始生成代码 在这个里面找到你想生成的表,然后右键,就会出现如下所示的截面。 点击1所示的位置,选择你要将生成的代码放入哪个文件夹中,选择完以后点击OK即可。 勾选你需要生成的代码,点击OK。 这样的话就完成了代码的生成了,生成的代码如下图所示: 5、pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <!-- 这个需要为 true 热部署才有效 --> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!--阿里巴巴连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.9</version> </dependency> 6、Application.yml server: port: 8089 spring: datasource: url: jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver mybatis: mapper-locations: classpath:/mapper/*Dao.xml typeAliasesPackage: com.vue.demo.entity 7、启动项目 在启动项目之前,我们需要先修改两个地方。 在dao层加上@mapper注解 在启动类里面加上@MapperScan("com.vue.demo.dao")注解。 启动项目 测试一下 EasyCode的用法就介绍到这里了,觉得有用的童鞋赶紧用起来试试吧~ 云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 原文发布时间:2020-02-09本文作者:HeloWxl本文来自:“互联网架构师公众号”,了解相关信息可以关注“互联网架构师”

优秀的个人博客,低调大师

Java POI重复读取excel:stream closed,回退流PushbackInputStream解决

Java POI读取Excel有两种文件格式,2003和2007以上的,需要通过不同的api进行读取,于是写了下面的工具类。 public class ExcelReadUtil { private static Logger log = LoggerFactory.getLogger(ExcelReadKit.class); /** * * @param fis * 输入的文件流 * @param sheetIndex * 第x个sheet * @return */ public void readExcel(InputStream fis, int sheetIndex) { try { Sheet sheet = null; Workbook wb = null; try { // 利用poi读取excel文件流,2003版本 POIFSFileSystem fs = new POIFSFileSystem(fis); wb = new HSSFWorkbook(fs); // 读取excel工作簿 sheet = wb.getSheetAt(sheetIndex); // 读取excel的sheet,0表示读取第一个 } catch (Exception e) { // 利用poi读取excel文件流,2007及以上版本 wb = new XSSFWorkbook(fis); // 读取excel工作簿 sheet = wb.getSheetAt(sheetIndex); // 读取excel的sheet,0表示读取第一个 } //读取操作省略。。。 wb.cloneSheet(sheetIndex); fis.close(); } catch (Exception e) { log.error("读取Excel文件流时出错:", e); } finally { if (fis != null) { try { fis.close(); } catch (Exception e) { } } } } } 先读取2003(.xls)版本的,如果异常就读取2007(.xlsx)版本的,看起来没什么问题,但是实际使用中,当读取xlsx文件的时候会stream closed报错,这是为什么呢?原来当读取了一次文件流的异常之后,运行到wb = new XSSFWorkbook(fis); // 读取excel工作簿的时候,输入流已经被关闭了。怎么解决这个InputStream 被关闭的问题呢?使用前用PushbackInputStream包装,读取前先POIFSFileSystem.hasPOIFSHeader和POIFSFileSystem.hasPOIFSHeader方法读取流的头判断文件格式 修改如下: public class ExcelReadUtil { private static Logger log = LoggerFactory.getLogger(ExcelReadKit.class); /** * * @param fis * 输入的文件流 * @param sheetIndex * 第x个sheet * @return */ public void readExcel(InputStream fis, int sheetIndex) { try { Sheet sheet = null; Workbook wb = null; // 不加报错:java.io.IOException: mark/reset not supported //PushbackInputStream参考:https://my.oschina.net/fhd/blog/345011 if (!fis.markSupported()) { fis = new PushbackInputStream(fis, 8); } /** * 只能通过这种方式判断版本,使用如果通过 * try catch捕获异常方式先读取了一次,流会被关闭,后面就读取不到了 */ //2003版 if (POIFSFileSystem.hasPOIFSHeader(fis)) { // 读取excel工作簿 wb = new HSSFWorkbook(fis); } //2007版 else if (POIXMLDocument.hasOOXMLHeader(fis)) { //OPCPackage.open(fis)取得一个文件的读写权限 wb = new XSSFWorkbook(OPCPackage.open(fis)); } //读取操作省略。。。 wb.cloneSheet(sheetIndex); fis.close(); } catch (Exception e) { log.error("读取Excel文件流时出错:", e); } finally { if (fis != null) { try { fis.close(); } catch (Exception e) { } } } } } 使用工具类,此时读取两种格式的文件都没有问题了 public class ExcelReaderTest { @Test public void readData() throws IOException, ParseException { File file = new File("D:\\test.xlsx"); ExcelReadUtil excelReader = new ExcelReadUtil(); //只读取第一个sheet页 excelReader.readExcel(new FileInputStream(file), 0); //... } } 具体PushbackInputStream介绍参考:https://my.oschina.net/fhd/blog/345011

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册