范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

肝了一个半月的Java项目快速开发脚手架Chewing

  前言
  闲来无事,整一个 Java 项目快速开发脚手架。 正文一、简介
  Chewing 是一个简单的 Java 项目快速开发脚手架。既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常用的技术。 二、源码
  源码地址:https://github.com/jingqueyimu/chewing。 三、核心技术1、后端SpringBoot:Web 应用框架。 MyBatis:持久层框架。 MySQL:关系型数据库。 Redis:缓存数据库。 RabbitMQ:消息队列中间件。 2、前端Thymeleaf:模板引擎。 Bootstrap:UI 框架。 四、环境部署1、准备工作JDK 1.8 MySQL 5.7 Maven 3.x Redis RabbitMQ 2、必要配置application.properties 配置文件:数据库、Redis、RabbitMQ、邮箱等配置。 config/myconfig.properties 配置文件:系统相关的自定义配置。 五、项目介绍1、文件结构src/main/java     |— com.jingqueyimu         |— annotation        // 注解         |— aspect        // 切面         |— config        // 配置         |— constant        // 常量         |— context        // 上下文         |— controller        // 控制层         |— exception        // 异常         |— factory        // 工厂         |— filter        // 过滤器         |— handler        // 处理器         |— init        // 初始化         |— interceptor        // 拦截器         |— mapper        // 持久层         |— model        // 数据模型         |— mq        // 消息队列         |— schedule        // 调度         |— service        // 服务层         |— util        // 工具         MyAppcation.java        // 应用启动类 src/main/resources     |— config        // 配置文件     |— mapper        // 映射文件     |— static        // 静态文件     |— templates        // 页面文件     application.properties        // 应用配置文件     quartz.properties        // 调度配置文件 2、代码说明(1)路由/api/xxx:需要用户登录。 /console/xxx:需要管理员登录,登录、登出等部分接口除外。 (2)接口规范页面请求:GET、URL 参数。 接口请求:POST、JSON 参数。 (3)数据库初始化初始化配置文件:config/dbinit.json。 配置初始化标识及 SQL 语句。
  初始化示例: [     {         "initKey": "site_config_20210110",         "sqls": [             "INSERT INTO t_site_config (id, code, name, content, description, public_flag, gmt_create) VALUES(NULL, "site_record_no", "网站备案号", "备案号", "网站备案号", true, NOW());"         ]     } ] (4)文件上传下载上传单个文件:/file/upload。 上传多个文件:/file/uploads。 下载文件:/file/download。 (5)Excel 导入导出Excel 导入导出方法:ExcelUtil.importExcel()、ExcelUtil.exportExcel()。 Excel 导入导出处理器接口:IExcelImportHandler、IExcelExportHandler。
  导入示例: String msg = null; try {     String[] keys = new String[] {"username", "realName", "mobile"};     msg = ExcelUtil.importExcel(file.getInputStream(), keys, new IExcelImportHandler() {                  @Override         public void handle(JSONObject data) {             if (StringUtils.isBlank(data.getString("username"))) {                 throw new RuntimeException("用户名不能为空");             }             if (StringUtils.isBlank(data.getString("mobile"))) {                 throw new RuntimeException("手机号不能为空");             }             // 业务处理         }     });     log.info(msg); } catch (IOException e) {     e.printStackTrace(); }
  导出示例: ServletOutputStream os = null; try {     String fileName = "用户列表";     ...     // 用户列表数据     List list = userService.list(params);     // 表头     String[] headers = new String[] {"编号 ", "用户名", "姓名", "手机号", "邮箱", "注册方式", "注册时间", "上次登录时间", "是否VIP"};     os = response.getOutputStream();     // 导出     ExcelUtil.exportExcel(fileName, list, headers, os, new IExcelExportHandler() {                  @Override         public List handle(User user) {             List rowDatas = new ArrayList<>();             rowDatas.add(user.getId());             rowDatas.add(user.getUsername());             rowDatas.add(user.getRealName());             rowDatas.add(user.getMobile());             rowDatas.add(user.getEmail());             rowDatas.add(RegisterType.getEnum(user.getRegisterType()).getValue());             rowDatas.add(DateUtil.format(user.getRegisterTime(), "yyyy-MM-dd HH:mm:ss"));             rowDatas.add(user.getLastLoginTime() == null ? "" : DateUtil.format(user.getLastLoginTime(), "yyyy-MM-dd HH:mm:ss"));             rowDatas.add(Boolean.TRUE.equals(user.getVipFlag()) ? "是" : "否");             return rowDatas;         }     }); } catch (IOException e) {     e.printStackTrace(); } finally {     ... } (6)获取字典获取单个字典:/common/dict。 获取多个字典:/common/dicts。 (7)上下文信息UserContext:用户上下文信息。 AdminContext:管理员上下文信息。 (8)调度新增调度任务:继承 BaseJob。 调度接口 执行调度任务:/console/schedule_job/run。 修改调度状态:/console/schedule_job/update_status。 修改调度频率:/console/schedule_job/update_cron。 (9)注解@Lock:分布式锁。 @Perm:标注需要管理员权限的接口。 (10)配置文件由于个人习惯,项目中使用的是 properties 配置文件,对于习惯使用 yml 配置文件的,请手动修改。 如果要加载自定义的 yml 配置文件,可以使用项目中提供的 YAML 属性源工厂类:YamlPropertySourceFactory。
  代码示例: @Component @ConfigurationProperties(prefix="test") @PropertySource(value="classpath:config/test.yml", encoding="UTF-8", factory=YamlPropertySourceFactory.class) public class TestYmlConfig {     ... } (11)属性名后缀匹配查询条件
  BaseService 中以 JSON 对象为参数的方法,可通过在属性名后面添加后缀,来匹配查询条件。 xxx_begin:大于等于。 xxx_end:小于等于。 xxx_in:IN 查询。 xxx_like:模糊查询。 xxx_llike:左模糊查询。 xxx_rlike:右模糊查询。 其他:等于。 属性值为空:不参与查询。
  代码示例: @Test public void test() {     JSONObject params = new JSONObject();     params.put("username_like", "test");     List user = userService.list(params);     System.out.println(user); }  @Test public void test2() {     JSONObject params = new JSONObject();     params.put("username_in", Arrays.asList("test"));     List user = userService.list(params);     System.out.println(user); } (12)...六、演示图1、前台
  2、后台
  结语
  目前,Chewing 还只是提供了一些较为常用的功能(实在是肝不动了)。但是,后续会不断完善、新增功能。有时间的话,也会整一个微服务版的。
  敬请期待~
  原文链接:https://www.cnblogs.com/jingqueyimu/p/14364213.html
最新手机好评榜排名华为两款手机前10,小米又全军覆没?在激烈竞争的手机行业中,好评率也逐渐成为了消费者选择的重要指标。近日,7月份安卓手机好评排行公布,榜单前10国产手机占了8席之位,但令人意外的是,不久前刚击败苹果拿下全球第二的小米我亲眼看见刷金币到一百万我的同事因为忘记了自己手机的开机密码,我们两人从网上搜索到一些方法,就开始解锁手机密码,弄了有一个多小时也没有解开密码,最后还是去华为维护部才解开手机,手机解开以后就变成了恢复出厂选购手机四大误区,买新不买旧只是其中之一,另外三点更重要手机其实只要能够满足日常打电话发消息就可以了,但随着科技的进步,手机已经成为了日常贴身必备的数码产品,我们会把很多重要信息存在手机上,用手机支付用手机记录生活,甚至用手机来办公,所开学季就要来了,给大家带来10003000价位手机推荐眼看着新的开学季就要来了,各位准大学生们有没有买新手机呢,是否还在为挑选哪款手机烦恼呢?今天给大家推荐10003000价位的机型,供大家参考。1000元左右红米note94G版本骁电力计量智能定时,养鱼新手体验aigo三位延长线插座(智能款)一直想给鱼缸安装可定时的照明灯和冲浪泵,在网上查看了相关分享,实现定时开关功能的主流方案是安装定时插座。此类设备有数种,常见的是传统电子定时器,优点是价廉,功能简单还有最近流行的智一枚比特币价值数十万,他却将10万比特币全部套现,如今怎样了?随着全球经济局势变化,数字货币正在作为一种新型的货币,越来越为人所知,一枚比特币价值数十万是非常轻松的事情。对于有投资眼光的人而言,在比特币刚刚出来的那段时间大量持有并发家致富的人难怪小米手机指纹解锁反应慢,原来是这2个开关没关闭,涨知识了分享生活小妙招,共享科技新生活!大家好,欢迎来到今天的知识分享!我是你们的好朋友小俊!很多人在使用小米手机指纹解锁的时候,经常会发现反应慢,或者不听使唤的情况!其实我们只需关闭2个为阻止中国发展内存芯片,2020年美国全球通缉中国芯片大佬陈正坤2020年6月24日,美国旧金山法院发出逮捕令,理由是涉嫌窃取美国存储大厂位于爱达荷州的美光DRAM技术商业机密的三位嫌疑人列入通缉名单。三位嫌疑人当中有一位是大陆芯片制造商福建晋美国TMobile一亿多客户信息遭到泄露,疑遭黑客盗取近日,美国TMobile公司正在调查关于黑客出售一亿客户个人信息的事件,此前有一名黑客在某在线论坛公开出售私人数据信息,包含姓名社保号码以及住址电话等。该黑客卖家出售的数据属于TM美国人花一美元和我们花一人民币的感觉一样吗?这样的说法让人尴尬,美国有太多的的一美元店。在我们国家一元人民币基本上就是买不了什么东西,就是一瓶水,也都是很差的,一元人民币的打火机也是质量特别差的那种,除此之外,再也没有一元人快来看下这些新能源车有你喜欢的吗?随着新能源汽车越来越火,很多的车企开始重视小车的发展,而且还有很多车型成为了爆火的存在,为市场焕发出新的活力。如果说火,宏光MINIEV肯定是最火爆的一款,此次上市后就风靡全国,甚
电商带来物流行业爆炸式发展,未来仓库会是无人化?毋庸置疑,电商的蓬勃发展推进了物流行业爆炸式发展,每年几十亿的快件收发推动的不单单是几家快递公司在纽交所敲钟,更难的是它已经形成了一个庞大的产业链,无数的人正在靠这个产业链发展生存Windows11发布会,有哪些地方值得关注?6月24日晚微软发布了全新的Win11系统,相比于Win10有不少新的功能和改进,在这里草鸡就说一下这四个地方的改变1界面界面是最明显的变化,Win11系统的新界面现代简约风格更加小米路由器AX6000发布小米11最好的WiFi伴侣在2020年12月28日的小米11新品发布会上,小米发布了首款支持WiFi6增强版技术的高端新品路由器小米路由器AX6000。小米路由器AX6000拥有6000兆级的无线速率,为目四年后,我终于等到了小米便携鼠标2,主打纤薄时尚2016年小米推出首款便携鼠标,四年后,小米便携鼠标2将于2020年12月30日迭代上市。第一代小米便携鼠标,凭借着时尚商务的外观设计精益求精的制作工艺精准流畅的操控体验以及针对移定位旗舰,小米发布小米多看电纸书Pro,支持24级冷暖阅读灯去年,小米推出的小米多看电纸书受到了很多米粉的喜爱,而时隔一年之后,小米终于带来了定位旗舰的小米多看电纸书Pro。这款电纸书搭载7。8英寸300ppi高清墨水屏,拥有24级双色温阅KPL决赛中的大彩蛋,新一代旗舰iQOO7现身本来我还躺在沙发上看DYG战队VS成都AG超玩会的KPL决赛,没想到有个大彩蛋iQOO7突然亮相。iQOO手机一直都是KPL官方比赛用机,在iQOO5系列上,除了有120Hz高刷新千元一亿像素靠谱吗?RedmiNote9Pro体验评测RedmiNote,一个看到名字就能猜到是主打性价比的系列,在经过了多年之后,终于来到了Note9的时代。这次Redmi一口气发布了三款RedmiNote9系列产品,我买到的是Re暗光下请别拒绝自拍,vivoS9让你爱上暗光自拍vivoS系列的新品终于来了,作为S系列,vivoS9及vivoS9e依旧是主打自拍与轻薄设计的产品。在本次发布会上甚至出现了小剧场,可以说很符合年轻人的风格。最后结合vivoS9首发天玑1200处理器,realme真我GTNeo评测在realme真我GT发布会后有一个OneMoreThing,那就是本次评测的主角realme真我GTNeo。从当时发布会上的海报来看,能隐隐约约看到有个1200的标致,其实很明显小米笔记本Pro正式发布一次全新进化,6K内还有谁2021年3月29日,在小米春季新品发布会上,全新小米笔记本Pro正式发布。全新小米笔记本Pro定位商务轻薄本,采用高端CNC工艺的6系航空级铝合金机身11代英特尔酷睿H35高性能千元机的三大标准守则,iQOOZ3首发评测试问各位,你们买千元机的时候最在意什么方面?如果让我们回到前几年,千元机主要在处理器上发力,基本都是中端芯片,也很好理解,毕竟不能抢了自家旗舰的风头。后来,旗舰手机上的高刷屏也陆续