引言
我是干前端的,闲来没事,也想学学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 Java,Maven for Java,Maven dependency explorer,Spring 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










![推荐一款神级编程工具[Cursor]自带gpt而且免费!](https://img-blog.csdnimg.cn/img_convert/42ba072cfcb3b08e0fe2ea4d5a78e5f9.png)






![C嘎嘎~~[谈谈C++的一些优化]](https://img-blog.csdnimg.cn/1cccbf4aa678484d99688c8cbb146379.png)

