不想当全栈的前端不是好设计

ST最近心血来潮想研究下后台增删改查
结果被后台开发新手村的小怪兽虐到死
记录一下学习过程恳请大腿们不要嘲笑
前方低能预警这真的不是一篇技术博客

Reference: 感动铁路热心好同事李阿明

在前端大陆,出了HTML新手村,被React小boss打的遍体鳞伤的日子也过去一阵了,这时就突然想去其他大陆看一看。毕竟随便拽个后台小哥都能写出一个很丑但能用的jsp,但作为一个优秀的设计师兼伪前端,ST电脑里……完全没有数据库和后台开发的种种工具( ¯•ω•¯ ),咦所以我们来补一补常识。

技术太多挑俩研究,Oracle + Springboot就它吧。

Step1:PL/SQL与Oracle客户端

在ST目前的理解中,一个程序应该是分为前台,后台,数据库三部分。首先把数据库装一下。本来以为需要装Oracle但是发现好像可以用PL/SQL链接现有远程的库。

需要的安装文件有两个如下,一个oracle客户端instantclient,一个PL/SQL:

需要的安装文件.png

先看instantclient。解压oracle客户端instantclient到随便一个地方,然后手动建立NETWORK/ADMIN文件夹并建一个tnsnames.ora,这个ora文件里面写上连接Oracle数据库的配置。
建立tnsnames.ora

tnsnames.ora的内容从其他开发小哥哪里拷贝一下即可。

JXGL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 目标IP)(PORT = 目标端口))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

然后添加几个系统变量:
ORACLE_HOME : D:\Database\instantclient_12_1
TNS_ADMIN%ORACLE_HOME%
NLS_LANGSIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改Path,增加变量值:%ORACLE_HOME%\bin;

至此instantclient安装配置完毕。

装上PL/SQL,第一次打开时不输入用户密码先取消进入主界面。打开Tools->Perferences->Connection,配置Oracle Home和OCI,地址即之前装instantclient的地址。

preferences设置.png

此时登陆PL/SQL,输入用户密码理论上可以链接到数据库啦。左侧Tables目录下能看到该数据库所有的表,趁经理不知道赶快公库私用建一个自己的表玩啊哈哈哈哈哈。


链接数据库.png

Step2:搭建Springboot工程

虽然我,还没有搞懂Spring,SpringMVC,Springboot都有什么区别(´ー`),不过先不管三七二十一拿一个用再说。
开IDEA新建工程,选Spring Initializr。为什么不开Myeclipse,因为黑色显得高级→_→


建立工程时有一步是选依赖,没接触过后台的小白这一步就开始崩溃,因为根本不知道选啥……不过反正后面也可以改先选个web好了……

建立完项目理论上工程目录如下:

工程结构.png

此时工程里的配置文件可能是application.properties文件,建议删掉改成yml文件因为看着格式比较好看,里面可以改改端口号啥的还可以把数据塞进去。

#application.properties
 
server.port=8080
#application.yml

server:
  port: 8080

此时运行DemoApplication应该是不会报错哒虽然什么也显示不出来。这就是我不喜欢后台的地方因为它们经常什么也显示不出来→_→

运行.png

Step3:做一点小测试

虽然我,还没有搞懂Dao层、Entity层、Service层、Controller层都有什么区别(´ー`),大致知道Dao层跟数据库打交道,Controller跟View层打交道,Entity放数据库在项目中的类,Service是干嘛的……不过先不管三七二十一写一个再说。

测试一:读取yml中的值

建立一个Controller.png

建立一个HelloController,并在yml里加一个值name:Saint。

#application.yml

server:
  port: 8080
  context-path: /crud
name:Saint

@Value(${name})的方式可以取得配置文件中的值。照着教程写一个Controller ( •́ _ •̀)。

@RestController
public class HelloController {
    @Value("${name}")  
    private String name;  

    @RequestMapping(value = "/crud/hello",method = RequestMethod.GET)
    Public String say(){
        return "Hello " + name;
    }
}

缺少啥包就alt+enter自动导入进来,基本上都能解决( ´ω` )。

运行。嘿哈!

运行结果.png

测试二:还是读取yml中的值

如果yml中一个属性有好几个值。

#application.yml

server:
  port: 8080
  context-path: /crud
person:
  name:Saint
  age:26

建立一个接收application.yml中的person属性的类。

@ConfigurationProperties(prefix="person")
public class PersonProperties { 
    private String name; 
    private Integer age;
    
    public String getName() { 
        return name;    
    } 
    public String setName() { 
        this.name = name; 
    }     
    public Integer getAge() { 
        return age;    
    } 
    public Integer setAge() { 
        this.age = age; 
    }  
}

这时会报异常,需要在pom.xml里面引入ConfigurationProperties的依赖。

<dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-configuration-processor</artifactId> 
  <optional>true</optional> 
</dependency>
pom.xml引入依赖.png

然后修改HelloController,用我们刚刚写的类中的方法去读取数据。

@RestController
public class HelloController {
    @Autowired 
    private PersonProperties person;  

    @RequestMapping(value = "/crud/hello",method = RequestMethod.GET)
    Public String say(){
        return person.getName() + person.getAge();
    }
}

运行,嘿嘿哈!后台怎么这么多逻辑一点也不有趣(´・ω・`)

运行结果.png

Step4:不过还是要连下数据库才行

虽然我,还没有搞懂jdbc、jpa,hibernate、mybatis都有什么区别(´ー`),不过先不管三七二十一……
啊就用jdbc好了听说它比较快。

pom.xml中增加jdbc的依赖。

<dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-jdbc</artifactId> 
</dependency>
<dependency> 
  <groupId>com.oracle</groupId> 
  <artifactId>ojdbc7</artifactId> 
  <version>12.1.0.3</version> 
</dependency>
pom.xml

注意,这个时候,是会报错的,因为ojdbc这个包好像不能通过maven自动添加,得手动安装到本地仓库。
先去网上下载一个ojdbc的包,看好版本,然后cd到ojdbc.jar的存放目录下,运行命令:
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.3 -Dpackaging=jar -Dfile=ojdbc7.jar

如果这时候项目还报错找不到包,请检查IDEA里maven的路径,确保用的是装了ojdbc.jar的那个maven,ST之前把maven的路径选错了所以一直找不到( º﹃º )

yml中配置数据源。跟之前PL/SQL登录用的信息一样即可。

#application.yml

server:
  port: 8081
  context-path: /crud

datasource:
      driver-class-name: oracle.jdbc.driver.OracleDriver
      url: jdbc:oracle:thin:@数据源地址
      username: 用户
      password: 密码
application.yml

接下来读取数据库。
新建一个PersonController,用jdbcTemplate获取数据库数据试一下。表就用我们之前偷偷建的那张表。

@RestController
@RequestMapping("/crud")
public class PersonController {
    @Autowired 
    private JdbcTemplate jdbcTemplate;  

    @RequestMapping(value = "/person",method = RequestMethod.GET)
    Public List show(){
        list l = jdbcTemplate.queryForList("select * from 表名")
        return l;
    }
}

浏览器看一下接口,哇还记得我们之前添加的三条数据,成功读取d(`・∀・)b

list数据.png

到这里终于看着很熟悉了,前端开发的时候后台给的都是这种东西。

下面搞个View层。就大功告成了。
阿勒什么开发到这了你告诉我Springboot没有View层(((゚Д゚;)))?
没关系,咱什么也不会只会view层!
下面演示5分钟用vue搭建单页应用。搭建过程略。

接口写好,点击读取。

开心~ヽ(✿゚▽゚)ノ

啊写完才发现springboot推荐用thymeleaf做引擎写页面还是很方便的。
不过改日再研究thymeleaf吧。
至于增删改查的后台代码怎么写,先缓缓→_→
能读个数已经死了无数脑细胞了……
我要先回前端大陆。

总结:

全栈是不可能全栈的,这辈子都不可能全栈(ㆆᴗㆆ)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容