2024年最全【SpringBoot搭建个人博客】- 分类管理(六),初级java面试题大全

最后

作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料


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

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

<select id="getTypeByName" resultType="com.star.entity.Type">
    select * from myblog.t_type where name = #{name}
</select>
<!--编辑修改分类-->
<update id="updateType" parameterType="com.star.entity.Type">
    update myblog.t_type set name = #{name} where id = #{id}
</update>
<!--删除分类-->
<delete id="deleteType" >
    delete from myblog.t_type where id = #{id}
</delete>

讲解:

  • parameterType属性:用于指定传入参数的类型,传入的是一个类的对象,所以写全类名
  • resultType属性:用于指定结果集的类型
  • #{ } 字符:代表占位符,类似 jdbc 中的 ?,用于执行语句时替换实际的数据

3.分类管理业务层

分类业务层接口

这里和持久层接口是一样的,就不做分析,在service包下创建TypeService接口,代码如下:

package com.star.service;

import com.star.entity.Type;

import java.util.List;

/**

  • @Description: 分类业务层接口
  • @Date: Created in 11:41 2020/6/2
  • @Author: ONESTAR
  • @QQ群: 530311074
  • @URL: https://onestar.newstar.net.cn/

*/

public interface TypeService {

//新增保存分类
int saveType(Type type);
//根据id查询分类
Type getType(Long id);
//查询所有分类
List<Type> getAllType();
//根据分类名称查询分类
Type getTypeByName(String name);
//编辑修改分类
int updateType(Type type);
//删除分类
void deleteType(Long id);

}

接口实现类

没啥好分析的,直接调用持久层接口,在Impl包下创建TypeServiceImpl类实现TypeService接口,代码如下:

package com.star.service.Impl;

import com.star.dao.TypeDao;

import com.star.entity.Type;

import com.star.service.TypeService;

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

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**

  • @Description: 分类业务层接口实现类
  • @Date: Created in 13:32 2020/6/2
  • @Author: ONESTAR
  • @QQ群: 530311074
  • @URL: https://onestar.newstar.net.cn/

*/

@Service

public class TypeServiceImpl implements TypeService {

@Autowired
private TypeDao typeDao;
@Transactional
@Override
public int saveType(Type type) {
    return typeDao.saveType(type);
}
@Transactional
@Override
public Type getType(Long id) {
    return typeDao.getType(id);
}
@Transactional
@Override
public List<Type> getAllType() {
    return typeDao.getAllType();
}
@Override
public Type getTypeByName(String name) {
    return typeDao.getTypeByName(name);
}
@Transactional
@Override
public int updateType(Type type) {
    return typeDao.updateType(type);
}
@Transactional
@Override
public void deleteType(Long id) {
    typeDao.deleteType(id);
}

}

讲解:

  • @Service注解:用于标注业务层组件
  • @Autowired注解:@Autowired表示被修饰的类需要注入对象,spring会扫描所有被@Autowired标注的类,然后根据类型在ioc容器中找到匹配的类注入
  • @Transactional注解:实现事务操作

4.分类管理控制器

分析:

问:分类管理控制器需要考虑哪些功能?

答:基本的增、删、改、查功能

问:增删改查够了吗?为了有良好的体验,前端页面显示的时候需要能够分页显示,操作成功后在前端有信息提示,并需要做重复判断,这些要如何实现呢?

答:分页显示使用PageHelper插件具体使用可以参考:SpringBoot引入Pagehelper分页插件 ,前端信息提示可以用model.addAttribute,重复添加使用@Valid注解:请求数据校验,再做一个逻辑判断就可以了

添加PageHelper分页插件,在pom.xml中添加:

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.12</version>
    </dependency>

在admin包下创建TypeController控制器类,代码如下:

package com.star.controller.admin;

import com.github.pagehelper.PageHelper;

import com.github.pagehelper.PageInfo;

import com.star.entity.Type;

import com.star.service.TypeService;

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

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.*;

import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import java.util.List;

/**

  • @Description:
  • @Date: Created in 14:56 2020/6/2
  • @Author: ONESTAR
  • @QQ群: 530311074
  • @URL: https://onestar.newstar.net.cn/

*/

@Controller

@RequestMapping(“/admin”)

public class TypeController {

@Autowired
private TypeService typeService;
//    分页查询分类列表
@GetMapping("/types")
public String list(Model model, @RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum){
    //按照排序字段 倒序 排序
    String orderBy = "id desc";
    PageHelper.startPage(pageNum,10,orderBy);
    List<Type> list = typeService.getAllType();
    PageInfo<Type> pageInfo = new PageInfo<Type>(list);
    model.addAttribute("pageInfo",pageInfo);
    return "admin/types";
}
//    返回新增分类页面
@GetMapping("/types/input")
public String input(Model model){
    model.addAttribute("type", new Type());
    return "admin/types-input";
}
//  新增分类
@PostMapping("/types")
public String post(@Valid Type type, RedirectAttributes attributes) {
    Type type1 = typeService.getTypeByName(type.getName());
    if (type1 != null) {
        attributes.addFlashAttribute("message", "不能添加重复的分类");
        return "redirect:/admin/types/input";
    }
    int t = typeService.saveType(type);
    if (t == 0) {
        attributes.addFlashAttribute("message", "新增失败");
    } else {
        attributes.addFlashAttribute("message", "新增成功");
    }
    return "redirect:/admin/types";
}
//    跳转修改分类页面
@GetMapping("/types/{id}/input")
public String editInput(@PathVariable Long id, Model model) {
    model.addAttribute("type", typeService.getType(id));
    return "admin/types-input";
}
//    编辑修改分类
@PostMapping("/types/{id}")
public String editPost(@Valid Type type, RedirectAttributes attributes) {
    Type type1 = typeService.getTypeByName(type.getName());
    if (type1 != null) {
        attributes.addFlashAttribute("message", "不能添加重复的分类");
        return "redirect:/admin/types/input";
    }
    int t = typeService.updateType(type);
    if (t == 0 ) {
        attributes.addFlashAttribute("message", "编辑失败");
    } else {
        attributes.addFlashAttribute("message", "编辑成功");
    }
    return "redirect:/admin/types";
}
//    删除分类
@GetMapping("/types/{id}/delete")
public String delete(@PathVariable Long id,RedirectAttributes attributes) {
    typeService.deleteType(id);
    attributes.addFlashAttribute("message", "删除成功");
    return "redirect:/admin/types";
}

那么如何才能正确的掌握Redis呢?

为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题

  • 并发编程面试题汇总

  • JVM面试题汇总

  • Netty常被问到的那些面试题汇总

  • Tomcat面试题整理汇总

  • Mysql面试题汇总

  • Spring源码深度解析

  • Mybatis常见面试题汇总

  • Nginx那些面试题汇总

  • Zookeeper面试题汇总

  • RabbitMQ常见面试题汇总

JVM常频面试:

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(一)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(二)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Redis常见面试题汇总(300+题)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

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

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

试题整理汇总

  • Mysql面试题汇总

  • Spring源码深度解析

  • Mybatis常见面试题汇总

  • Nginx那些面试题汇总

  • Zookeeper面试题汇总

  • RabbitMQ常见面试题汇总

JVM常频面试:

[外链图片转存中…(img-vPHvhvhR-1715097476320)]

Mysql面试题汇总(一)

[外链图片转存中…(img-41AKWnAg-1715097476320)]

Mysql面试题汇总(二)

[外链图片转存中…(img-ed7qwxqw-1715097476321)]

Redis常见面试题汇总(300+题)

[外链图片转存中…(img-MA2hn0FF-1715097476321)]

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

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

  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供完整的2024年的Java面试及答案,因为我无法预测未来的情况。但是,我可以给你提供一些常见的Java面试和答案,帮助你准备面试。 1. Java中的基本数据类型有哪些? 答案:Java中的基本数据类型包括byte、short、int、long、float、double、boolean和char。 2. Java中的包装类是什么? 答案:包装类是一种将基本数据类型封装成对象的类。例如,Integer是封装int类型的包装类。 3. Java中的String类是可变的吗? 答案:String类是不可变的,一旦创建就不能被修改。如果需要修改字符串,可以使用StringBuilder或StringBuffer类。 4. Java中的继承和接口有什么区别? 答案:继承是指一个类从另一个类获取属性和方法的过程,通过extends关键字实现。接口是一种规范,定义了一组方法的集合,通过implements关键字实现。 5. Java中的异常处理机制是什么? 答案:Java中的异常处理机制通过try-catch-finally语句块来实现。try块中包含可能抛出异常的代码,catch块用于捕获并处理异常,finally块用于执行无论是否发生异常都需要执行的代码。 6. Java中的多线程是如何实现的? 答案:Java中的多线程可以通过继承Thread类或实现Runnable接口来实现。另外,还可以使用线程池来管理和调度线程。 7. Java中的反射是什么? 答案:反射是指在运行时动态获取和操作类的信息。通过反射,可以获取类的属性、方法和构造函数等信息,并且可以在运行时调用这些方法。 8. Java中的泛型是什么? 答案:泛型是一种参数化类型的机制,可以在编译时检查类型的安性。通过使用泛型,可以使代码更加灵活和可重用。 9. Java中的集合框架有哪些? 答案:Java中的集合框架包括List、Set、Map等接口和它们的实现类。这些集合类提供了一组用于存储和操作对象的方法。 10. Java中的内存管理是如何工作的? 答案:Java中的内存管理由Java虚拟机(JVM)负责。JVM使用垃圾回收机制来自动管理内存,当对象不再被引用时,垃圾回收器会自动回收该对象所占用的内存空间。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值