【Mybatis-Plus 学习笔记】2、日志配置及常用 CRUD

}

insert 操作

首先是插入数据,insert 方法中,传入我们所要插入数据库的实体对象作为参数即可。

  • 方法声明

/**

  • 插入一条记录

  • @param entity 实体对象

*/

int insert(T entity);

  • 插入实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Test

void contextLoads() {

}

@Autowired

private EmployeeMapper employeeMapper;

@Test

void testInsert() {

Employee employee = new Employee();

employee.setId(4L);

employee.setName(“赵六”);

employee.setSex(“男”);

employee.setEmail(“zhaoliu@cunyu1943.com”);

Assert.assertEquals(1, employeeMapper.insert(employee));

System.out.println(“插入成功”);

}

}

  • 测试结果

  • 数据插入后的数据库

select 操作

相比于插入数据操作,查询数据的方法就要更多,而且还能实现批量查询和条件查询。

  1. 根据主键查询

将所要查询数据的主键作为参数传入我们的 selectById 方法中,即可实现。

  • 方法声明

/**

  • 根据 ID 查询

  • @param id 主键ID

*/

T selectById(Serializable id);

  • 查询实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Test

void contextLoads() {

}

@Autowired

private EmployeeMapper employeeMapper;

@Test

void testSelectById() {

Employee employee = employeeMapper.selectById(3);

System.out.println(employee);

}

}

  • 测试结果

  1. 根据主键批量查询

上一个方法每次只能查询一条记录,如果我们想要查询多条数据记录,那么就可以将要查询数据的主键列表传入 selectBatchIds 方法即可。

  • 方法声明

/**

  • 查询(根据ID 批量查询)

  • @param idList 主键ID列表(不能为 null 以及 empty)

*/

List selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

  • 批量查询实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Test

void contextLoads() {

}

@Autowired

private EmployeeMapper employeeMapper;

@Test

void testSelectBatchIds() {

List ids = new ArrayList<>();

ids.add(1);

ids.add(4);

List employeeList = employeeMapper.selectBatchIds(ids);

System.out.println(employeeList);

}

}

  • 测试结果

  1. 根据多条件查询

除开支持主键查询外,MP 还支持条件查询,只要将我们的条件传入 Map 列表中,然后将其作为 selectByMap 方法的参数即可,其中传入 Mapkey 对应我们数据库中的字段,而 value 则对应字段的值。

  • 方法声明

/**

  • 查询(根据 columnMap 条件)

  • @param columnMap 表字段 map 对象

*/

List selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

  • 条件查询实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Test

void contextLoads() {

}

@Autowired

private EmployeeMapper employeeMapper;

@Test

void testSelectByMap() {

Map<String, Object> map = new HashMap<>();

map.put(“sex”, “男”);

map.put(“name”, “张三”);

System.out.println(employeeMapper.selectByMap(map));

}

}

  • 测试结果

update 操作

更新操作,主要是根据我们数据库的主键进行查询,将对应主键的实体对象传入 updateById 方法即可。

  • 方法声明

/**

  • 根据 ID 修改

  • @param entity 实体对象

*/

int updateById(@Param(Constants.ENTITY) T entity);

  • 更新实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeMapper employeeMapper;

@Test

void testUpdate() {

Employee employee = new Employee();

employee.setEmail(“zhao6@cunyu1943.com”);

employee.setName(“赵 6”);

employee.setSex(“女”);

employee.setId(4L);

Assert.assertEquals(1, employeeMapper.updateById(employee));

System.out.println(“更新成功”);

}

}

  • 测试结果

  • 数据更新后的数据库

delete 操作

删除操作,既可以根据主键删除一条记录,也能根据主键列表实现批量删除,还能根据条件来进行删除。

  1. 根据主键删除一条数据

将所要删除记录的主键作为参数传入 deleteById 方法即可。

  • 方法声明

/**

  • 根据 ID 删除

  • @param id 主键ID

*/

int deleteById(Serializable id);

  • 删除实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeMapper employeeMapper;

@Test

void testDeleteById() {

Assert.assertEquals(1, employeeMapper.deleteById(2L));

System.out.println(“删除成功”);

}

}

  • 测试结果

  • 删除数据后的数据库

  1. 根据条件删除

根据条件删除同样是讲条件传入 Map 中,然后将 Map 作为参数传入 deleteByMap 方法,其中 key 对应数据库中的字段,value 对应字段的值。

  • 方法声明

/**

  • 根据 columnMap 条件,删除记录

  • @param columnMap 表字段 map 对象

*/

int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

  • 删除实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeMapper employeeMapper;

@Test

void testDeleteByMap() {

Map<String, Object> map = new HashMap<>();

map.put(“name”, “赵 6”);

Assert.assertEquals(1, employeeMapper.deleteByMap(map));

System.out.println(“删除成功”);

}

}

  • 测试结果

  • 删除数据后的数据库

  1. 根据主键批量删除

将要删除记录的主键传入集合中,然后将集合作为 deleteBatchIds 方法的参数即可。

  • 方法声明

/**

  • 删除(根据ID 批量删除)

  • @param idList 主键ID列表(不能为 null 以及 empty)

*/

int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

  • 批量删除实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeMapper employeeMapper;

@Test

void testDeleteBatchIds() {

List ids = new ArrayList<>();

ids.add(1);

ids.add(3);

Assert.assertEquals(2, employeeMapper.deleteBatchIds(ids));

System.out.println(“删除成功”);

}

}

  • 测试结果

  • 删除数据后的数据库

Service CRUD 接口


Service 层继承自 IService 接口,其中的方法和 Mapper 层中所提供的方法功能是一致的,除了方法名有所不同外,其他基本类似,但 Service 层中提供了更为丰富的方法,两者的继承结构如下图所示。

package com.cunyu.employee.service;

import com.baomidou.mybatisplus.extension.service.IService;

import com.cunyu.employee.entity.Employee;

/**

  • Created with IntelliJ IDEA.

  • @author : cunyu

  • @version : 1.0

  • @project : Employee

  • @package : com.cunyu.employee.service

  • @className : EmployeeService

  • @createTime : 2021/8/8 7:52

  • @description : 员工服务接口

*/

@Service

public interface EmployeeService extends IService {

}

package com.cunyu.employee.service.Impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

/**

  • Created with IntelliJ IDEA.

  • @author : cunyu

  • @version : 1.0

  • @project : Employee

  • @package : com.cunyu.employee.service.Impl

  • @className : EmployeeServiceImpl

  • @createTime : 2021/8/8 7:53

  • @description : 员工服务类实现

*/

@Service

public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {

}

Save

  1. 插入一条记录

功能同 Mapper 层中的 insert 方法,只不过方法名不同。

  • 方法声明

// 插入一条记录(选择字段,策略插入)

boolean save(T entity);

  • 插入实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testSave() {

Employee employee = new Employee();

employee.setId(5L);

employee.setName(“周七”);

employee.setEmail(“zhouqi@cunyu1943.com”);

employee.setSex(“女”);

Assert.assertTrue(employeeService.save(employee));

System.out.println(“插入成功”);

}

}

  • 测试结果

  • 插入数据后的数据库

  1. 批量插入

这里就和 Mapper 层中所有区别,Mapper 层中只支持单次插入,而 Service 层中支持批量插入,而传入的参数就是我们所要传入实体的集合,而且还可以分批次插入和统一插入。

2.1 统一插入

  • 方法声明

// 插入(批量)

boolean saveBatch(Collection entityList);

  • 插入实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

import java.util.ArrayList;

import java.util.List;

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testSaveBatch() {

Employee employee1 = new Employee();

employee1.setId(6L);

employee1.setEmail(“zhangliang@cunyu1943.com”);

employee1.setSex(“男”);

employee1.setName(“张良”);

Employee employee2 = new Employee();

employee2.setId(7L);

employee2.setEmail(“zhouyu@cunyu1943.com”);

employee2.setName(“周瑜”);

employee2.setSex(“男”);

List employeeList = new ArrayList<>();

employeeList.add(employee1);

employeeList.add(employee2);

Assert.assertTrue(employeeService.saveBatch(employeeList));

System.out.println(“批量插入成功”);

}

}

  • 测试结果

  • 统一插入后的数据库

2.2 分批次插入

  • 方法声明

// 插入(批量)

boolean saveBatch(Collection entityList, int batchSize);

  • 分批次插入实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

import java.util.ArrayList;

import java.util.List;

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testSaveBatch() {

Employee employee1 = new Employee();

employee1.setId(8L);

employee1.setEmail(“jialuo@cunyu1943.com”);

employee1.setSex(“女”);

employee1.setName(“迦罗”);

Employee employee2 = new Employee();

employee2.setId(9L);

employee2.setEmail(“zhugeliang@cunyu1943.com”);

employee2.setName(“诸葛亮”);

employee2.setSex(“男”);

List employeeList = new ArrayList<>();

employeeList.add(employee1);

employeeList.add(employee2);

Assert.assertTrue(employeeService.saveBatch(employeeList,2));

System.out.println(“批量插入成功”);

}

}

  • 测试结果

  • 分批次插入后的数据库

SaveOrUpdate

  1. 单条修改插入
  • 方法声明

// TableId 注解存在更新记录,否插入一条记录

boolean saveOrUpdate(T entity);

  • 单条修改插入实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

import java.util.ArrayList;

import java.util.List;

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testSaveOrUpdate() {

Employee employee = new Employee();

employee.setId(5L);

employee.setName(“周武”);

employee.setEmail(“zhouwu@cunyu1943.com”);

employee.setSex(“男”);

Assert.assertTrue(employeeService.saveOrUpdate(employee));

System.out.println(“更新成功”);

}

}

  • 测试结果

  • 修改插入后的数据库

  1. 批量修改插入

2.1 统一插入

  • 方法声明

// 批量修改插入

boolean saveOrUpdateBatch(Collection entityList);

  • 统一插入实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

import java.util.ArrayList;

import java.util.List;

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testSaveOrUpdateBatch() {

Employee employee1 = new Employee();

employee1.setId(10L);

employee1.setEmail(“zhongwuyan@cunyu1943.com”);

employee1.setSex(“女”);

employee1.setName(“钟无艳”);

Employee employee2 = new Employee();

employee2.setId(11L);

employee2.setEmail(“direnjie@cunyu1943.com”);

employee2.setName(“狄仁杰”);

employee2.setSex(“男”);

List employeeList = new ArrayList<>();

employeeList.add(employee1);

employeeList.add(employee2);

Assert.assertTrue(employeeService.saveOrUpdateBatch(employeeList));

System.out.println(“批量修改插入成功”);

}

}

  • 测试结果

  • 统一插入数据后的数据库

2.2 分批次插入

  • 方法声明

// 批量修改插入

boolean saveOrUpdateBatch(Collection entityList, int batchSize);

  • 方法实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

import java.util.ArrayList;

import java.util.List;

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testSaveOrUpdateBatch() {

Employee employee1 = new Employee();

employee1.setId(12L);

employee1.setEmail(“yuji@cunyu1943.com”);

employee1.setSex(“女”);

employee1.setName(“虞姬”);

Employee employee2 = new Employee();

employee2.setId(13L);

employee2.setEmail(“sulie@cunyu1943.com”);

employee2.setName(“苏烈”);

employee2.setSex(“男”);

List employeeList = new ArrayList<>();

employeeList.add(employee1);

employeeList.add(employee2);

Assert.assertTrue(employeeService.saveOrUpdateBatch(employeeList, 2));

System.out.println(“批量修改插入成功”);

}

}

  • 测试结果

  • 分批次插入数据后的数据库

Remove

  1. 根据 ID 删除
  • 方法实例

// 根据 ID 删除

boolean removeById(Serializable id);

  • 删除实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testRemoveById() {

Assert.assertTrue(employeeService.removeById(5));

System.out.println(“删除成功”);

}

}

  • 测试结果

  1. 根据条件删除
  • 方法声明

// 根据 columnMap 条件,删除记录

boolean removeByMap(Map<String, Object> columnMap);

  • 按条件删除实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

import java.util.HashMap;

import java.util.Map;

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testRemoveByMap() {

Map<String, Object> map = new HashMap<>();

map.put(“sex”, “女”);

Assert.assertTrue(employeeService.removeByMap(map));

System.out.println(“删除成功”);

}

}

  • 测试结果

  • 按条件删除后的数据库

  1. 根据 ID 批量删除
  • 方法声明

// 删除(根据ID 批量删除)

boolean removeByIds(Collection<? extends Serializable> idList);

  • 批量删除实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

import java.util.ArrayList;

import java.util.List;

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testRemoveByIds() {

List ids = new ArrayList<>();

ids.add(1);

ids.add(4);

Assert.assertTrue(employeeService.removeByIds(ids));

System.out.println(“批量删除成功”);

}

}

  • 测试结果

  • 批量删除后的数据库

Update

  1. 根据 ID 选择修改
  • 方法声明

// 根据 ID 选择修改

boolean updateById(T entity);

  • 根据 ID 修改实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testUpdateById() {

Employee employee = new Employee();

employee.setId(3L);

employee.setName(“程咬金”);

employee.setSex(“男”);

employee.setEmail(“chengyaojin@cunyu1943.com”);

Assert.assertTrue(employeeService.updateById(employee));

System.out.println(“更新成功”);

}

}

  • 测试结果

  • 更新后的数据库

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。

《Java高级面试》

《Java高级架构知识》

《算法知识》

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
3950d27aa75ae82a123cad3955b.png)

Update

  1. 根据 ID 选择修改
  • 方法声明

// 根据 ID 选择修改

boolean updateById(T entity);

  • 根据 ID 修改实例

package com.cunyu.employee;

import com.cunyu.employee.entity.Employee;

import com.cunyu.employee.mapper.EmployeeMapper;

import com.cunyu.employee.service.EmployeeService;

import org.junit.Assert;

import org.junit.jupiter.api.Test;

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

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

@SpringBootTest

class EmployeeApplicationTests {

@Autowired

private EmployeeService employeeService;

@Test

void testUpdateById() {

Employee employee = new Employee();

employee.setId(3L);

employee.setName(“程咬金”);

employee.setSex(“男”);

employee.setEmail(“chengyaojin@cunyu1943.com”);

Assert.assertTrue(employeeService.updateById(employee));

System.out.println(“更新成功”);

}

}

  • 测试结果

  • 更新后的数据库

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-8HqwMkdf-1713400934042)]

[外链图片转存中…(img-j2uAKw47-1713400934043)]

[外链图片转存中…(img-wWvw1G5a-1713400934043)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。

《Java高级面试》

[外链图片转存中…(img-s6hC3JH6-1713400934043)]

《Java高级架构知识》

[外链图片转存中…(img-bjvNsP4O-1713400934043)]

《算法知识》

[外链图片转存中…(img-Shoz2WRm-1713400934044)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值