【周报】SpringBoot寒假学习记录

Day 1

开会,确定本周学习内容,首次创建springboot项目

Day 2

1.认识springboot在开发中的具体应用。

2.学习springboot工程创建与配置文件。

3.学习了yml配置信息书写和获取。

4.认识了一个项目的基本架构。

5.学习了springboot整合mybatis。

6.学习了Bean扫描。

7.学习了Bean注册。

8.学习并在idea中配置了maven,认识了maven的一些基础概念(仓库,坐标,项目构建,依赖引入)。

—————————————————————

Day 3

1.继续学习bean注册。

2.学习了注册条件。

3.学习了springboot的自动配置原理。

4.学习了自定义starter相关知识。

5.结束基础篇,开始学习实战篇的“big-event”项目,学习开发模式和环境搭建。

6.学习写注册接口和接口参数校检。

7.学习了登录主逻辑和登录认证。

8.学习了JWT令牌。

9.学习postman的使用。

10.简单了解了SSM框架。

1. anno​

  • 功能: 存放自定义注解。

  • 用途:

    • 定义特定的元信息,帮助项目实现自定义逻辑,例如权限控制、日志记录、数据校验等。
    • 这些注解可能与切面编程(AOP)或框架功能结合使用。

2. config​

  • 功能: 项目配置文件存放处。

  • 用途:

    • 配置 Spring Boot 的核心功能,例如 @Configuration​ 类。
    • 数据源、MyBatis、Redis 或其他第三方组件的配置。
    • 配置跨域(CORS)、拦截器、过滤器等。

3. controller​

  • 功能: 控制层,用于处理前端请求。

  • 用途:

    • 定义 REST API 的入口,使用 @RestController​ 或 @Controller​ 注解。
    • 接收并处理客户端的 HTTP 请求(如 GET、POST、PUT、DELETE),调用服务层处理业务逻辑,并返回响应结果。

4. exception​

  • 功能: 处理异常相关的功能。

  • 用途:

    • 定义自定义异常类。
    • 集中式异常处理器,使用 @ControllerAdvice​ 和 @ExceptionHandler​ 注解。
    • 将异常转化为用户友好的错误消息。

5. interceptors​

  • 功能: 定义拦截器逻辑。

  • 用途:

    • 实现请求的预处理和后处理。
    • 例如:登录状态校验、权限认证、日志记录等。
    • 通常使用 Spring 的 HandlerInterceptor​ 接口实现。

6. mapper​

  • 功能: 数据访问层,用于操作数据库。

  • 用途:

    • 存放 MyBatis 的 Mapper 接口,使用 @Mapper​ 注解。
    • 定义数据库操作方法(如增删改查),这些方法会映射到对应的 SQL。
    • 与 mapper​ 文件夹通常会对应 XML 映射文件。

7. pojo​

  • 功能: 存放实体类。

  • 用途:

    • 定义与数据库表结构对应的 Java 对象。
    • 每个实体类通常包含字段、getter、setter 方法,有时还包含 toString​ 和 equals​ 等方法。
    • 这些类通常与 MyBatis 的 Mapper 配合使用。

8. service​

  • 功能: 服务层,负责业务逻辑的处理。

  • 用途:

    • 包含业务逻辑,实现控制层和数据访问层之间的解耦。
    • 定义接口和实现类,接口使用 @Service​ 注解。
    • 处理复杂的业务规则、事务管理和调用数据访问层。

9. utils​

  • 功能: 存放工具类。

  • 用途:

    • 定义一些通用的、与业务无关的功能,例如字符串处理、日期格式化、加密解密等。
    • 提高代码复用率,减少冗余。

10. validation​

  • 功能: 定义验证逻辑。

  • 用途:

    • 存放参数验证规则,可能使用 Hibernate Validator 框架。
    • 自定义校验注解和校验器。
    • 实现数据合法性校验,保证请求参数符合预期。

11. BigEventApplication​

  • 功能: 主启动类。

  • 用途:

    • 使用 @SpringBootApplication​ 注解,标识项目的入口。
    • 启动整个 Spring Boot 应用。


Day 4

1.学习了获取用户详细信息。

2.学习了ThreadLocal优化。


Day 5

1.学习了更新用户基本信息及其参数校检。

2.学习了更新用户头像。

3.学习了更新用户密码。

4.学习了新增文章分类。

5.学习了文章分类列表,获取文章分类详情。

6.学习了更新文章分类。

package itheima.controller;

import itheima.pojo.Category;
import itheima.pojo.Result;
import itheima.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    private CategoryService categoryService;

    @PostMapping
    public Result add(@RequestBody @Validated(Category.Add.class) Category category){
        categoryService.add(category);
        return Result.success();
    }

    @GetMapping
    public Result<List<Category>> list(){
        List<Category> cs = categoryService.list();
        return Result.success(cs);
    }

    @GetMapping("/detail")
    public Result<Category> detail(Integer id){
        Category c = categoryService.findById(id);
        return Result.success(c);
    }

    @PutMapping
    public Result update(@RequestBody @Validated(Category.Update.class) Category category){
        categoryService.update(category);
        return Result.success();
    }

    @DeleteMapping
    public Result delete(Integer id){
        categoryService.deleteById(id);
        return Result.success();
    }
}

Controller层
package itheima.service;

import itheima.pojo.Category;

import java.util.List;

public interface CategoryService {
    //新增分类
    void add(Category category);

    //列表查询
    List<Category> list();

    //根据id查询分类信息
    Category findById(Integer id);

    //更新分类
    void update(Category category);

    //删除分类
    void deleteById(Integer id);
}

package itheima.service.impl;

import itheima.mapper.CategoryMapper;
import itheima.pojo.Category;
import itheima.service.CategoryService;
import itheima.utils.ThreadLocalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

@Service
public class CategoryServiceImpl implements CategoryService {

    @Autowired
    private CategoryMapper categoryMapper;

    @Override
    public void add(Category category) {
        //补充属性值
        category.setCreateTime(LocalDateTime.now());
        category.setUpdateTime(LocalDateTime.now());

        Map<String,Object> map = ThreadLocalUtil.get();
        Integer userId = (Integer) map.get("id");
        category.setCreateUser(userId);
        categoryMapper.add(category);
    }

    @Override
    public List<Category> list() {
        Map<String,Object> map = ThreadLocalUtil.get();
        Integer userId = (Integer) map.get("id");
        return categoryMapper.list(userId);
    }

    @Override
    public Category findById(Integer id) {
        Category c = categoryMapper.findById(id);
        return c;
    }

    @Override
    public void update(Category category) {
        category.setUpdateTime(LocalDateTime.now());
        categoryMapper.update(category);
    }

    @Override
    public void deleteById(Integer id) {
        categoryMapper.deleteById(id);
    }
}

Service层
package itheima.mapper;

import itheima.pojo.Category;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface CategoryMapper {
    //新增
    @Insert("insert into category(category_name,category_alias,create_user,create_time,update_time) " +
            "values(#{categoryName},#{categoryAlias},#{createUser},#{createTime},#{updateTime})")
    void add(Category category);

    //查询所有
    @Select("select * from category where create_user = #{userId}")
    List<Category> list(Integer userId);

    //根据id查询
    @Select("select * from category where id = #{id}")
    Category findById(Integer id);

    //更新
    @Update("update category set category_name=#{categoryName},category_alias=#{categoryAlias},update_time=#{updateTime} where id=#{id}")
    void update(Category category);

    //根据id删除
    @Delete("delete from category where id=#{id}")
    void deleteById(Integer id);
}

Mapper层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值