前端开发如何速成java,使用java开发网络接口

news2024/11/28 22:53:44

引言

我是干前端的,闲来没事,也想学学java,下面我会根据我学习java的经历来整理出java的速成之路。

学习路线

按照数字的顺序学下去就行了
1.学习java基础教程:主要听 class集合这两部分吧,这两个部分非常重要,也是开发中用到最多的,还有就是一些基本的数据类型要知道,别的带过一下就行了,jdk建议安装jdk8,不然学习过程中会遇到一些问题。
2.了解并安装maven,了解如何使用maven创建项目,以及pom.xml文件的使用。
3.学习mysql,安装mysql服务和可视化工具,掌握一下基本的增删改查语句就行了,可视化工具建议安装SQLyog ,不建议使用navcat,在公司使用容易收到律师函,别问我怎么知道的,你可以试试。
4.学习spring boot,了解如何创建spring boot项目以及项目的目录结构,学会在spring boot项目整合 mybatis plus,其他的对于入门来说不重要,咋们开发的接口,主要也就是操作数据库然后响应数据给浏览器。

使用spring boot项目开发接口

创建 spring boot项目

因为咋们是前端,自然会爱vscode多一点,用idea咋们估计用不惯。vscode可以写java一点问题没有,因为我一学习过程中直都是用vscode写java的,咋们只需要安装一下这几个插件就行了 Extension Pack for JavaMaven for JavaMaven dependency explorerSpring Initializr Java Support
1.
在这里插入图片描述
2.
在这里插入图片描述3.
在这里插入图片描述4.
在这里插入图片描述
5.版本随便选吧。我选的最新的版本,我用的jdk17
在这里插入图片描述
6.
在这里插入图片描述
7.公司域名倒写
在这里插入图片描述
8.项目名称,不建议带符号和大写,因为我有次带了跑不起来
在这里插入图片描述
9.
在这里插入图片描述
10.选择自己安装的jdk版本
在这里插入图片描述
11.选择依赖,我勾选的是我选的,选好回车,然后选择项目所放置的文件夹
在这里插入图片描述12.
在这里插入图片描述
13.此时编辑器右下角会出现一个提示,咋们点提示中的check detail,是蓝色字样,点了之后,就开始安装依赖,安装依赖较慢,需要耐心等待。因为我安装之前过了,缓存了,所以没给我提示。
14.在pom.xml添加mybatis plus依赖

<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>3.0.2</version>
</dependency>

15.建立规范的项目目录
在这里插入图片描述

MySQL中创建表

在这里插入图片描述

整合mybatis plus

首先连接数据库,在.yml文件配置如下

spring:
  datasource: 
       driver-class-name: com.mysql.cj.jdbc.Driver   
       url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
       username: username
       password: password

然后创建根据表创建实体类

// Emp.java
package com.example.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Builder;
import lombok.Data;

@Data
@Builder
@TableName(value="emp")
public class Emp {
  public Integer id;
  @TableField(value="emp_name") public String name;   // 可以这样用成员变量来映射表的字段
  public int age;
  public double salary;
  public double reward;
  public double asset;
  @TableField(value="dep_id") public Integer depId;

  Emp(){}
  public Emp(Integer id,String name,int age,double salary,double reward,double asset,Integer depId){
     this.id=id;
     this.name=name;
     this.age=age;
     this.salary=salary;
     this.reward=reward;
     this.asset=asset;
     this.depId=depId;
  }
}

最后创建接口整合mybatis plus

// empDao.java
package com.example.dao;

import org.apache.ibatis.annotations.Mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.Emp;


// mybatis plus
@Mapper
public interface empDao extends BaseMapper<Emp>{
// 也可以在里面加些自己的查询方法,当然mybatis-plus没有的才加,不然直接用它提供的方法就好。复杂查询我不会,这里就随便加个了
  @Select("select * from emp")  
  public ArrayList<Emp> getAllEmp();
}

创建接口中需要用到的数据类型

在这里插入图片描述

开发接口

// empController.java
package com.example.controller;

import java.util.Collection;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.dao.empDao;
import com.example.entity.Emp;
import com.example.pojo.listSearchCdt;
import com.example.pojo.listSearchResult;
import com.example.pojo.resultType;

@RestController
@RequestMapping("/emp")
public class empController {
  @Autowired empDao empDao;
  
   
  @GetMapping("/test")
  public String test(){
      return "hhhh";
  }

  @GetMapping("/all")
  public resultType<List<Emp>> getAllEmp(){
   resultType<List<Emp>> res=new resultType<>();
   List<Emp> data=empDao.selectList(null);
   try {
     res.code=data!=null?200:201;
     res.data=data;
     res.message=data!=null?"查询所有记录成功":"查询所有记录失败";
   } catch (Exception e) {
     res.code=500;
     res.error=e;
     res.message="服务器繁忙!";
   }
   return res;
  }

  @PostMapping
   public resultType<Boolean> addEmp(@RequestBody Emp emp){
    resultType<Boolean> res=new resultType<>();
    Boolean isSuccess=empDao.insert(emp)>0;
    try {
      res.code=isSuccess?200:201;
      res.data=isSuccess;
      res.message=isSuccess?"新增成功":"新增失败";
    } catch (Exception e) {
      res.code=500;
      res.error=e;
      res.message="服务器繁忙!";
    }
    return res;
   }

   @DeleteMapping
   public resultType<Boolean> deleteEmp(@RequestBody Integer id){
    resultType<Boolean> res=new resultType<>();
    Boolean isSuccess=empDao.deleteById(id)>0;
    try {
     res.code=isSuccess?200:201;
     res.data=isSuccess;
     res.message=isSuccess?"删除成功":"删除失败";
    } catch (Exception e) {
      res.code=500;
      res.error=e;
      res.message="服务器繁忙!";
    }
    return res;
   }

   @PostMapping("/deleteMany")
   public resultType<Boolean> deleteEmps(@RequestBody Collection<Integer> ids){
    resultType<Boolean> res=new resultType<>();
    Boolean isSuccess=empDao.deleteBatchIds(ids)>0;
    try {
     res.code=isSuccess?200:201;
     res.data=isSuccess;
     res.message=isSuccess?"批量删除成功":"批量删除失败";
    } catch (Exception e) {
      res.code=500;
      res.error=e;
      res.message="服务器繁忙!";
    }
    return res;
   }

  @PutMapping
   public resultType<Boolean> updateEmp(@RequestBody Emp emp){
     resultType<Boolean> res=new resultType<>();
     Boolean isSuccess=empDao.update(emp, null)>0;
     try {
      res.code=isSuccess?200:201;
      res.data=isSuccess;
      res.message=isSuccess?"更新成功":"更新失败";
     } catch (Exception e) {
      res.code=500;
      res.error=e;
      res.message="服务器繁忙!";
     }
     return res;
   }

   @GetMapping("/{id}")
   public resultType<Emp> getEmpById(@PathVariable Integer id){
     resultType<Emp> res=new resultType<>();
     Emp data=empDao.selectById(id);
     try {
      res.code=data!=null?200:201;
      res.data=data;
      res.message=data!=null?"查询单条记录成功":"查询单条记录失败";
     } catch (Exception e) {
      System.out.println(e);
      res.code=500;
      res.error=e;
      res.message="服务器繁忙!";
     }
     return res;
   }


  //  分页条件查询
  @GetMapping
   public resultType<listSearchResult<Emp>> getSearchEmpList(listSearchCdt cdt){
    resultType<listSearchResult<Emp>> res=new resultType<>();
     IPage<Emp> page=new Page<Emp>(cdt.page.page, cdt.page.size, true);
     QueryWrapper<Emp> filterOptions=new QueryWrapper<Emp>(cdt.filterOpions, null);
     IPage<Emp> ipage=empDao.selectPage(page,filterOptions);
     try {
        listSearchResult<Emp> data= new listSearchResult<Emp>();
        data.list=ipage.getRecords();
        data.total=ipage.getTotal();
        res.data=data;
        res.message="分页条件查询成功";
     } catch (Exception e) {
      res.code=500;
      res.error=e;
      res.message="服务器繁忙!";
     }
     return res;
   }
}

可以看到mybatis plus以及内置了基本的增删改查方法,不需要我们写什么sql,除非是非常复杂的查询
在这里插入图片描述

测试接口

在这里插入图片描述

项目源代码获取

链接:https://pan.baidu.com/s/10g29EvKZUrzLiq4zqPPmjg
提取码:1234

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

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

相关文章

ASEMI代理韩景元可控硅C106M参数,C106M封装,C106M尺寸

编辑-Z 韩景元可控硅C106M参数&#xff1a; 型号&#xff1a;C106M 断态重复峰值电压VDRM&#xff1a;600V 通态电流IT(RMS)&#xff1a;4A 通态浪涌电流ITSM&#xff1a;30A 平均栅极功耗PG(AV)&#xff1a;0.2W 峰值门功率耗散PGM&#xff1a;1W 工作接点温度Tj&…

【LeetCode】《LeetCode 101》第九章:巧解数学问题

文章目录 9.1 公倍数与公因数9.2 质数204.计数质数&#xff08;中等&#xff09; 9.3 数字处理504. 七进制数&#xff08;简单&#xff09;172. 阶乘后的零&#xff08;中等&#xff09;415. 字符串相加&#xff08;简单&#xff09;326. 3 的幂&#xff08;简单&#xff09; 9…

mysql语句最大执行时间问题解决,无需改mysql配置

下面是我排错的一个过程&#xff1a; 1、我是ado.net执行一个查询语句报了个错&#xff1a; Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 译&#xff1a;超时已过期。操作完成前经过的超时时间&a…

【Netty】 工作原理详解(十一)

文章目录 前言一、Netty 模型二、代码示例2.1、引入Maven依赖2.2、服务端的管道处理器2.3、服务端主程序2.4、客户端管道处理器2.5、客户端主程序2.6、测试运行 总结 前言 回顾Netty系列文章&#xff1a; Netty 概述&#xff08;一&#xff09;Netty 架构设计&#xff08;二&…

借军工经验开拓消费市场,三星显示收购eMagin浅析

前不久三星显示&#xff08;Samsung Display&#xff09;宣布&#xff0c;拟支付2.18亿美元收购微显示方案商eMagin全部普通股&#xff0c;收购完成后eMagin将并入三星显示&#xff0c;以加速XR显示业务发展。 据青亭网了解&#xff0c;eMagin成立于1996年&#xff0c;该公司多…

《Spring Guides系列学习》guide11 - guide15

要想全面快速学习Spring的内容&#xff0c;最好的方法肯定是先去Spring官网去查阅文档&#xff0c;在Spring官网中找到了适合新手了解的官网Guides&#xff0c;一共68篇&#xff0c;打算全部过一遍&#xff0c;能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的gu…

JVM调优实战

1、当项目运行一段时间以后&#xff0c;产生了OOM的问题&#xff0c;我们该如何排查问题呢&#xff1f; 用top命令&#xff0c;看看是哪个进程CPU占用率高&#xff0c;获取它的进程ID&#xff0c;再根据具体的进程id&#xff0c;执行 top -HP 进程id号 命令,看看哪个线程的CP…

复制架构,Redis Sentinel分析

存储高可用&#xff0c;一般采用复制架构&#xff0c;复制架构&#xff0c;需要关注故障架构和状态决策2个要点 复制架构通用关注点 数据复制 复制格式 格式优点缺点举例命令数据量小可能存在数据不一致Mysql 的statement同步方式&#xff0c;按commit顺序同步&#xff0c;…

文件系统考古:1974-Unix V7 File System

有时&#xff0c;进步难以察觉&#xff0c;特别是当你正身处其中时。而对比新旧资料之间的差异&#xff0c;寻找那些推动变革的信息源&#xff0c;我们就可以清晰地看到进步的发生。在Linux&#xff08;以及大部分Unix系统&#xff09;中&#xff0c;都可以印证这一点。 Unix …

淘宝层级改版,五力模型上线!

最近临近618&#xff0c;淘系又各种功能改版&#xff0c;现在店铺层级也开始陆续改版了。从原来的只需要提升销售金额&#xff0c;到现在的五力模型。我们先说一下原来的店铺层级考核&#xff0c;跟现在的区别主要是哪&#xff1f; 1.原来店铺层级的考核升级特别简单&#xff0…

推荐一款神级编程工具[Cursor]自带gpt而且免费!

今天推荐一款非常好用开发工具&#xff0c;一个智能编程助手。 官网&#xff1a;https://www.cursor.so/ 适用平台&#xff1a;Mac、Windows、Linux。 助手的样子 可以做哪些事情&#xff1f; 编程语言&#xff1a;我可以回答关于各种编程语言&#xff08;如Python、Java、Ja…

测试老鸟总结,从功能到自动化测试详细整理,测试之路广阔无垠...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…

黑客零基础入门教程,从入门到精通学习路线规划,看完这篇就够了

很多人上来就说想学习黑客&#xff0c;但是连方向都没搞清楚就开始学习&#xff0c;最终也只是会无疾而终&#xff01;黑客是一个大的概念&#xff0c;里面包含了许多方向&#xff0c;不同的方向需要学习的内容也不一样。 想要成为黑客&#xff0c;却苦于没有方向&#xff0c;…

戏曲APP软件开发需具备哪些功能呢?

戏曲是我国的国粹&#xff0c;传统戏曲文化源远流长&#xff0c;博大精深&#xff0c;数千年以来一直都是深受大众喜欢的文化生活的重要环节。随着时代的推进&#xff0c;娱乐形式更加多样化&#xff0c;传统的剧场演出形式的戏曲传播方式已经跟不上时代发展以及人们的需求了。…

python+Django+vue高校体育足球篮球联赛网站系统

系统主要是以后台管理员管理为主。管理员需要先登录系统然后才可以使用本系统&#xff0c;管理员可以对个人中心、用户管理、赛事信息管理、球队信息管理、球员信息管理、比赛分值板管理、系统管理等进行添加、查询、修改、删除&#xff0c;以保障足球联赛管理系统的正常运行。…

es elasticsearch 十 中文分词器ik分词器 Mysql 热更新词库

目录 中文分词器ik分词器 介绍 安装 使用分词器 Ik分词器配置文件 Mysql 热更新词库 中文分词器ik分词器 介绍 中文分词器按照中文进行分词&#xff0c;中文应用最广泛的是ik分词器 安装 官网下载对应版本zip 下载 放到 plugins 目录 新建 ik文件夹 考入解析zip 重…

es Elasticsearch 十一 Java api实现 索引管理

目录 Java api实现 索引管理 Pom 测试联通 增加索引 打印结果 异步执行 删除索引 查看索引是否存在 关闭索引 开启索引 Java api实现 索引管理 Pom <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-re…

C嘎嘎~~[谈谈C++的一些优化]

C的一些优化 匿名对象引用引用作形参引用作返回值 编译器优化构造 拷贝构造 ⇒ 构造拷贝构造 拷贝构造 ⇒ 一个拷贝构造 匿名对象 通过以前C语言的学习, 我们知道了有一种 具有临时性的, 没有名字的变量 — — 匿名变量. 那么我们的对象应该也有这个特性 — — 匿名对象 匿名…

如何在 Linux 中创建非登录用户?

在 Linux 系统中&#xff0c;用户账户的管理是一个重要的任务。除了常规的登录用户&#xff0c;有时候我们需要创建一些非登录用户&#xff0c;这些用户通常用于运行服务、执行特定任务或限制访问权限。 本文将详细介绍如何在 Linux 中创建非登录用户&#xff0c;并提供一些相关…

linuxOPS基础_linux系统注意事项

Linux严格区分大小写 Linux 和Windows不同&#xff0c;Linux严格区分大小写的&#xff0c;包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如&#xff0c;Win7 系统桌面上有文件夹叫做Test&#xff0c;当我们在桌面上再新建一个名为 test 的文件夹时&#xff0c…