2024年最新Spring Boot 实战 :入门篇,10天拿到腾讯Java岗offer

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

面试了阿里,滴滴,网易,蚂蚁,最终有幸去了网易【面试题分享】

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

server.port = 8080

添加 MySQL 数据库配置 127.0.0.1 作用和 localhost 一样

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boot_dome?serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true

用户名

spring.datasource.username=root

密码

spring.datasource.password=root

驱动

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

Thymeleaf 配置 模板支持 HTML XML Text JavaScript

spring.thymeleaf.mode=HTML5

编码,可不用配置

spring.thymeleaf.encoding=utf-8

内容类别,可不用配置

spring.thymeleaf.content-type=text/html

开发配置为 false 避免修改模板还要重启服务器

spring.thymeleaf.cache=false

配置模板路径,默认是 templates 可以不用配置

spring.thymeleaf.prefix=classpath:/templates/

这俩都配置好了之后,最起码可以保证项目能运行了。。哦哦哦不对。。还有一个地方

也是最重要的一部分!!!就是我们项目的主类!!一般新建的项目是这个样子的

然后我们再给他加上几个注解:

@ComponentScan(basePackages = “com.cs.mybatis.*”) // 扫描主程序文件

@MapperScan(“com.cs.mybatis.mapper”) // 扫描这个包下的 Mapper 文件

@ServletComponentScan // 使用该注解后,Servlet Filter Listener 可以直接通过

最后建一个测试类,测试一下是否可以访问成功,写好测试方法之后,点击右上角绿色的三角按钮启动,上边也介绍了,SpringBoot 有内置的 Tomcat 所以不用我们来配置

/**

  • @ClassName TestController

  • @Author linluochen

  • @Date 2019/4/19 16:09

  • @Version 1.0

**/

@Controller // 声明这是一个 Controller 表示此类用于负责处理 Web 请求

public class TestController {

@RequestMapping(“Test”) // 如果参数链接的请求的参数相同则调用此方法

@ResponseBody // 表示这个的返回值只一个文本不是一个视图路径 通常用于接收 AJAX 请求

public String Test(){

System.out.println(“来了老弟?”);

return “Hello World”;

}

}

页面输出结果为,同时查看控台也会有提示,这里就不贴图了。。

到这里,第一部分搭建项目就算完成了下面就是集成 MyBatis 进行增删改查

----------------------------------------------------------- 分界线 -----------------------------------------------------------------------

首先我们右键 New 一个 Package 包

然后创建好,model,mapper,service,serviceimpl 大概结构就是这个样子

model 用来存放实体类

mapper 和 service 用来放接口

serviceimpl 业务逻辑层,简单来说就是实现接口业务的地方

首先,现在数据库创建一个表:

create table teacher(

id int(11) primary key auto_increment, // 主键,自增

name varchar(30) ,

age int(11)

)

然后创建 Model 层:

package com.cs.mybatis.model;

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Id;

import javax.persistence.Table;

import lombok.Data;

import lombok.EqualsAndHashCode;

@Data

@EqualsAndHashCode(callSuper=false)

@Table(name=“teacher”) // 数据库名对应

public class Teacher implements Serializable {

// 序列化

private static final long serialVersionUID = 1L;

/**

  • ID

*/

@Id // 声明主键

@Column(name = “id”) // 与数据库字段名对应

private Integer id;

/**

  • 名字

*/

@Column(name = “name”)

private String name;

/**

  • 年龄

*/

@Column(name = “age”)

private Integer age;

public Teacher(){

}

public Teacher(

Integer id

){

this.id = id;

}

public void setId(Integer id) {

this.id = id;

}

public Integer getId() {

return this.id;

}

public void setName(String name) {

this.name = name;

}

public String getName() {

return this.name;

}

public void setAge(Integer age) {

this.age = age;

}

public Integer getAge() {

return this.age;

}

}

Mapper 层,这个地方我们集成了一下 Tk_MyBatis 相当于一个持久层 API 用过 Jpa 的朋友应该知道这个是啥意思,一般不是特别复杂的 sql 就不用在 Mapper 层写了,Tk 就可以搞定,当然如果是复杂的 sql 例如多表联合查询等还是要在Mapper操作的,如果实在不懂用法的话,可以给我留言评论,或者加我QQ,我会在最底部留下的

想了解详细用法的朋友可以看官方文档:https://github.com/abel533/Mapper/wiki/6.example 这里我们不做过多的介绍

package com.cs.mybatis.mapper;

import com.cs.mybatis.base.BaseMapper;

import com.cs.mybatis.model.Teacher;

import org.springframework.stereotype.Component;

@Component

public interface TeacherMapper extends BaseMapper { // 这个地方我们调用的 Tk_MyBatis 持久层 API

}

Service 层,这个就照常写就可以了

/*

  • Powered By [rapid-framework]

  • Web Site: http://www.rapid-framework.org.cn

  • Google Code: http://code.google.com/p/rapid-framework/

*/

package com.cs.mybatis.service;

import com.cs.mybatis.model.Teacher;

import java.util.List;

public interface TeacherService{

/**

  • @title: 查询全部

  • @auther: linluochen

  • @date: 2019/5/5 10:28

*/

List selectAll();

/**

  • @title: 增加

  • @param: teacher

  • @auther: linluochen

  • @date: 2019/5/5 10:30

*/

Integer insertSelective(Teacher teacher);

}

ServiceImpl 实现类,这个地方调用我们的 Mapper 虽然我们 Mapper 没有写东西,但是由于我们的 Mapper 继承了 Tk_MyBatis 里面的属性,所以可以直接调用简单的单表查询的方法

/*

  • Powered By [rapid-framework]

  • Web Site: http://www.rapid-framework.org.cn

  • Google Code: http://code.google.com/p/rapid-framework/

*/

package com.cs.mybatis.service.impl;

import com.cs.mybatis.mapper.TeacherMapper;

import com.cs.mybatis.model.Teacher;

import com.cs.mybatis.service.TeacherService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import java.util.List;

@Service

public class TeacherServiceImpl implements TeacherService {

@Autowired // 自动装配 Bean

TeacherMapper teacherMapper;

/**

  • @title: 查询全部

  • @auther: linluochen

  • @date: 2019/5/5 10:25

*/

@Override

public List selectAll() {

return teacherMapper.selectAll();

}

/**

  • @title: 新增

  • @param: teacher

  • @auther: linluochen

  • @date: 2019/5/5 10:25

*/

@Override

public Integer insertSelective(Teacher teacher) {

return teacherMapper.insertSelective(teacher);

}

}

写完这些之后,我们去测试一下能不能用,在左侧有一个 test 文件夹,然后打开,如下图

打开后在里面写入要测试的方法,这个类呢,是我们的测试类,所有的可执行操作都可以在这个里面进行测试,不过多解释,注解已经写得很清楚了,然后写完之后运行我们写的测试方法,在左侧会有一个绿色的三角标志,然后点击运行

package com.cs.mybatis;

import com.cs.mybatis.model.Teacher;

import com.cs.mybatis.service.TeacherService;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

import java.util.List;

@RunWith(SpringRunner.class)

@SpringBootTest // 声明这个是一个 TestController

public class MybatisApplicationTests {

@Resource // 自动装配 Bean 用来调用你定义的方法

TeacherService teacherService;

@Test

public void contextLoads() {

}

/**

  • @title: boot + mybatis selectAll()

  • @auther: linluochen

  • @date: 2019/5/5 10:41

*/

@Test // 声明这个是个 TestClass

public void TeacherSelectAll(){

List teachersList = teacherService.selectAll(); // 获取实现类的方法

for (Teacher teacher:teachersList) { // foreach 循环遍历

System.out.println(“ID:”+teacher.getId()+" “+“姓名:”+teacher.getName()+” "+“年龄:”+teacher.getAge());

最后我们该如何学习?

1、看视频进行系统学习

这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以分享给你:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

2、读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

Spring源码深度解析:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

Mybatis 3源码深度解析:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

Redis学习笔记:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

Spring Boot核心技术-笔记:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

3、面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。

人生短暂,别稀里糊涂的活一辈子,不要将就。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

Mybatis 3源码深度解析:

[外链图片转存中…(img-fBCXjuUq-1715224268534)]

Redis学习笔记:

[外链图片转存中…(img-OYprt9BL-1715224268535)]

Spring Boot核心技术-笔记:

[外链图片转存中…(img-Rdp8tS46-1715224268536)]

3、面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:

[外链图片转存中…(img-TFkgEaRb-1715224268536)]

只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。

人生短暂,别稀里糊涂的活一辈子,不要将就。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值