前言

不知道你是否有过这样的经历。不管你是什么岗位,前端也好,后端也罢,想去了解一下Java开发到底是什么样的,它是不是真的跟传说中的一样。

于是你拿起键盘,用触控板 ? '' : 抄起鼠标',开始了Java淌坑之旅。在一把梭的操作之后,面对你搭建的环境,你陷入了深深的沉思,开始了吾日三省吾身的自我质疑中。这tm到底哪儿错了?到底哪儿在报错?这报错啥意思?

经历了吾日三省吾身的深思之后,你把鼠标移动到了MacOS ? 左上角' : '右上角',然后双手离开了键盘放弃了操作。嗯,刚刚什么都没有发生。

如果你有类似的经历(如果没有请给Java一个面子假装你有过),那么就来认识一下venus-init吧。

venus-init

它是什么

venus-init是一个基于Node.js的命令行工具。使用venus-init,只需要一个命令,然后输入两个参数,就可以创建一个简单的Spring Boot应用。并且初始化的demo项目中还会有一个名叫Hello的模块来帮助你更好的理解这个项目。

在我还没有更新文档的情况下,npm上周下载量就突破了1000,不管是因为什么原因,下错了也好,觉得好用也好。感谢大佬们的支持。

如何使用

怎么做呢?"He can do that with a snap of his fing..." 走错了片场不好意思。首先你需要使用npm install venus-init来安装它。然后只需要在命令行输入如下的命令。

venus init

# you can also do it like this

venus i

只要输入这样一个命令,然后跟随命令行工具的指导,完成创建就ok了。

创建项目之后

完成上述步骤之后,就会发现在键入命令行的目录下,多个一个具有这样结构的目录。(这是我自己创建的demo项目,group和artifact都可以自己指定)

.

├── LICENSE

├── README.md

├── api

│   ├── pom.xml

│   └── src

│   └── main

│   ├── java

│   │   └── com

│   │   └── detectivehlh

│   │   └── demo

│   │   └── api

│   │   ├── Application.java

│   │   ├── config

│   │   │   ├── DbConfig.java

│   │   │   └── SwaggerConfig.java

│   │   ├── controller

│   │   │   └── HelloController.java

│   │   ├── dao

│   │   │   └── HelloMapper.java

│   │   ├── dto

│   │   │   └── HelloDTO.java

│   │   ├── entity

│   │   │   └── Hello.java

│   │   └── service

│   │   ├── HelloService.java

│   │   └── impl

│   │   └── HelloServiceImpl.java

│   └── resources

│   ├── application.yml

│   └── mapper

│   └── HelloMapper.xml

└── pom.xml

其中我内置了一个Hello的模块供大家参考,通过这个模块相信大家可以更加快的熟悉整个项目。整个项目的结构非常的清晰明了。

总共有6个包,config用于存放各种配置,像swagger的配置就放在这个包下面。

controller包是各种模块的控制层,里面包含了项目所有的api。

dao中存放了各个模块和数据库交互的mapper,值得注意的是,dao下只定义了接口,具体的sql则是放在了resources/mapper下。

dto中则是存放了与前端交互的数据结构。简单理解一下,数据库存放的数据并不是前端需要的数据,所以在查到数据之后需要对数据进行一次转换,再把转换好的数据返回给前端。

entity则是存放了与数据库交互的数据结构。通常情况下是与数据库的字段一一对应的。

service包是各个模块的核心代码所处的为主。大量的业务都会在这个包下。

Application则是项目的启动文件。

resources下的application.yml则是整个项目的配置文件。可以在这里配置项目的名称,数据库的配置,以及mybatis的配置,redis的配置等等。

启动项目

建议使用IDEA来打开这个项目,然后右键移动到Application上,选择Run Application即可看到应用运行在8080端口。

接下来,你只需要访问http://localhost:8080/hello,如果看到页面返回了如下信息,那么恭喜你,项目已经成功的启动了。

{

"message": "Hello world",

"createdAt": "current_timestamp"

}

查看项目的接口文档

使用venus-init初始化创建的项目会默认启用swagger文档,这是一个不需要你手写的api文档。swagger基于注解。只要你在对于的controller中写上了对应的注解,swagger就会自动的帮你生成API文档。

在项目成功的启动之后,你只需访问[http://localhost:8080/swagger-ui.html就可以看到自己的项目中有哪些接口,每个接口需要什么参数了以及接口的返回值是什么了。

如何连接数据库

初始化的项目同样也支持mysql的jdbc连接,同时在Hello模块中也实现的例子。

数据库信息

假设你有一个MySQL数据库,名字叫demo,地址是localhost,端口是3306,用户名和密码都是root,那么你需要在application.yml中找到数据库配置,将db_name换成你自己的数据库名也就是demo。然后重新启动项目,就可以直接连上你的数据库了。

如果你需要修改mysql的表名,则需要到HelloMapper.xml中,找到如下段落。

test

test是我们项目初始化时使用的表名,你可以将其换成自己的数据库表名,同理,如果你要换数据库的名字,只需要将上述的db_name换成自己的数据库名即可。

数据库表信息

假设在demo中有一张表叫test,结构如下。

column_name

column_value

id

用户id

name

用户名

并且有了数据

column_name

column_value

id

name

1

detectiveHLH

这个结构也是初始化模块Hello的表结构,所以你只要按照这个结构准备一张同样结构的表即可。

修改HelloServiceImpl

如果你已经成功的连接上了数据库,并且有了相应的表结构和数据。那么你需要把HelloServiceImpl中的注释的两行取消注释即可。然后重启项目,再次访问http://localhost:8080/hello即可看到控制台打印出了从数据查询到的信息。

到此,你就已经成功的打通了数据了。

最后

如果你在使用中遇到了任何的问题,欢迎提Issue。

java venus_来认识一下venus-init——一个让你仅需一个命令开始Java开发的命令行工具...相关推荐

  1. Java实现word文档转pdf(无需插件,仅需一个jar包)

    实现功能 docx文档转换为PDF 转换之后排版不混乱 依赖 aspose-words-15.8.0-jdk16.jar包提取路径(用于PDF转换 ) 链接:https://pan.baidu.com ...

  2. Java 8 函数式接口就是一个有且仅有一个(除和Object中方法有相同签名的外)抽象方法

    函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式. 昨天突然在看java8源码时候 ...

  3. 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定

    1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...

  4. docker image name 更改_将前端应用打包成docker镜像并部署?仅需一个脚本就搞定

    1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...

  5. read-only file system怎么改权限_“我就退出家长群!怎么了?”压垮成年人仅需一个“家长群”上热搜?...

    身为家长的你 是不是天天要看微信里的"家长群"? 你的感受怎么样? 近日,江苏一位家长受不了了! 他干脆退出了家长群 还在短视频中大呼: "我就退出家长群!怎么了?&qu ...

  6. 如何看电脑支持最大多少内存条?仅需一个命令

    很多电脑小白不懂内存条的意义,对于电脑卡顿可能最多想的就是换电脑. 其实性价比高的方法之一也是换,换内存条用以提高流畅度. 具体内存条存在的意义以及一些功能不再赘述 首先电脑最大支持内存主要由CPU和 ...

  7. java 域用户登陆_AD域账户自动登陆(仅限IE浏览器)Java简单实现

    实现流程:同步域账户用户名至项目数据库->若是IE浏览器则通过ActiveXObject获取PC用户名->根据用户名查询数据库->存在则自动登陆 步骤1:通过定时任务同步AD域账户用 ...

  8. 利用基于GPU的AI模拟一个现实宇宙 仅需36分钟

    来源:The Next Web 编译:科技行者 科学家已经习惯于使用超级计算机处理宇宙学领域的海量数据,最近卡耐基梅隆大学的研究团队找到一种新方法,可以使用常规的机器学习技术(与AI绘画或作曲拥有同样 ...

  9. 仅需一个参数就可搞定OneProxy的VIP机制

    文章转自:http://card.weibo.com/article/h5/s#cid=1001603863326047255626&vid=&extparam=&from=& ...

最新文章

  1. 如何将C#对象转换为.NET中的JSON字符串?
  2. 极光 php 自定义消息,laravel框架使用极光推送消息操作示例
  3. 此项目与visual studio的当前版本不兼容_忘掉GOPATH,迎接Go modules,进入Go项目依赖库版本管理新时代...
  4. linux查看xml文件的配置,Hibernate配置文件hibernate.cfg.xml的详细解释
  5. 黄章爆料魅族16s/16s Plus更多信息 无线充电已做到24W
  6. ASP.NET中利用JQuery AJAX修改用户密码
  7. 【转】simulink中的sample time设置
  8. 【转贴】 java 调用SAP RFC函数 报错信息搜集
  9. 老罗Android开发视频教程 打包下载地址,收集起来,给大家下载
  10. 2021vue面试题+答案
  11. Ubuntu下ASIC/FPGA环境搭建
  12. 6大关键词解析儿童学习桌消费市场
  13. 七大热门小程序框架横评,谁是性能之王
  14. Python——数学运算函数
  15. 有些打不开的国外网页
  16. 苹果IOS9为加强个人隐私信息保护强制HTTPS,APP开发者需申请SSL证书
  17. inflate()方法详解和源码分析
  18. 【TS】1303- TypeScript 4.7 beta 发布,几个重要的更新
  19. docker 安装snipe-it
  20. ChromeOptions--禁止加载图片

热门文章

  1. 栈子系统c语言,数据结构(栈子系统:c实现)
  2. CTF-pwn上的一次远程本地链接
  3. c语言程序设计复习提纲,C语言程序设计复习提纲
  4. python 比较列表相邻元素(找相同或去重)
  5. python中F/f表达式优于format()表达式
  6. python3 的 str bytes 区别
  7. 这里有8个流行的Python可视化工具包,你喜欢哪个?
  8. 计算机网络基础ios指令,蔡少云——计算机网络实验:IOS命令基础及交换机基本配置.doc...
  9. linux下的ppp软件,linux下ppp拨号无线上网(示例代码)
  10. linux安装rsync在各主机之间同步文件