2024年图书管理系统(三)图书管理系统实战(一),原创Kafka学习笔记

写在最后

为了这次面试,也收集了很多的面试题!

以下是部分面试题截图

Java程序员秋招三面蚂蚁金服,我总结了所有面试题,也不过如此

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

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

import lombok.NoArgsConstructor;

/**

  • @author : cunyu

  • @version : 1.0

  • @className : Book

  • @date : 2020/7/23 15:53

  • @description : Book 实体类

*/

@Data

@AllArgsConstructor

@NoArgsConstructor

public class Book {

private int bookId;

private String name;

private int number;

}

2.2 Appointment.java

package com.cunyu.pojo;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import java.util.Date;

/**

  • @author : cunyu

  • @version : 1.0

  • @className : Appointment

  • @date : 2020/7/23 15:57

  • @description : Appointment 实体类

*/

@Data

@NoArgsConstructor

@AllArgsConstructor

public class Appointment {

private int bookId;

private int studentId;

private Date appointTime;

private Book book;

}

3. dao 接口类编写


3.1 BookDao.java

package com.cunyu.dao;

import com.cunyu.pojo.Book;

import org.apache.ibatis.annotations.Param;

import java.util.List;

/**

  • @InterfaceName : BookDao

  • @Author : cunyu

  • @Date : 2020/7/23 16:02

  • @Version : 1.0

  • @Description : Book 接口

**/

public interface BookDao {

/**

  • @param bookId 图书 id

  • @return 对应 id 的图书

  • @description 根据图书 id 查找对应图书

  • @date 2020/7/23 16:04

  • @author cunyu1943

  • @version 1.0

*/

Book queryById(@Param(“bookId”) int bookId);

/**

  • @param offset 查询起始位置

  • @param limit 查询条数

  • @return 查询出的所有图书列表

  • @description 查询所有图书

  • @date 2020/7/23 16:08

  • @author cunyu1943

  • @version 1.0

*/

List queryAll(@Param(“offset”) int offset, @Param(“limit”) int limit);

/**

  • @param bookId 图书 id

  • @return 更新的记录行数

  • @description 借阅后更新馆藏

  • @date 2020/7/23 16:09

  • @author cunyu1943

  • @version 1.0

*/

int reduceNumber(@Param(“bookId”) int bookId);

}

3.2 AppointmentDao.java

package com.cunyu.dao;

import com.cunyu.pojo.Appointment;

import org.apache.ibatis.annotations.Param;

/**

  • @InterfaceName : AppointmentDao

  • @Author : cunyu

  • @Date : 2020/7/23 16:03

  • @Version : 1.0

  • @Description : Appointment 接口

**/

public interface AppointmentDao {

/**

  • @param bookId 图书 id

  • @param studentId 学生 id

  • @return 插入的行数

  • @description 插入预约图书记录

  • @date 2020/7/23 16:13

  • @author cunyu1943

  • @version 1.0

*/

int insertAppointment(@Param(“bookId”) int bookId, @Param(“studentId”) int studentId);

/**

  • @param bookId 图书 id

  • @param studentId 学生 id

  • @return

  • @description 通过主键查询预约图书记录,并且携带图书实体

  • @date 2020/7/23 16:16

  • @author cunyu1943

  • @version 1.0

*/

Appointment queryByKeyWithBook(@Param(“bookId”) int bookId, @Param(“studentId”) int studentId);

}

3.3 mapper 编写

编写好 dao 接口之后,并不需要我们自己去实现,MyBatis 会给我们动态实现,但是需要我们配置相应的 mapper。在 src/main/resources/mapper 下新建 BookDao.xmlAppointmentDao.xml,用于对应上面的 dao 接口;

3.3.1 BookDao.xml
<?xml version="1.0" encoding="UTF-8" ?>

SELECT book_id, name, number

FROM book

WHERE book_id = #{bookId}

SELECT *

FROM book

ORDER BY book_id

LIMIT #{offset},#{limit}

UPDATE book

SET number = number - 1

WHERE book_id = #{bookId}

AND number > 0

3.3.2 AppointmentDao.xml
<?xml version="1.0" encoding="UTF-8" ?>

INSERT ignore INTO appointment (book_id, student_id) VALUES (#{bookId}, #{studentId})

SELECT

appointment.book_id,

appointment.student_id,

appointment.appoint_time,

book.book_id “book.book_id”,

book.name “book.name”,

book.number “book.number”

FROM

appointment

INNER JOIN book ON appointment.book_id = book.book_id

WHERE

appointment.book_id = #{bookId}

AND appointment.student_id = #{studentId}

4. 测试


经过 准备数据库 -> 实体类编写 -> 接口类编写 -> mapper 配置 这一套流程之后,我们就可以进行模块化测试了,看看我们的接口是否成功实现。

4.1 BookDaoTest.java

package com.cunyu.dao;

import com.cunyu.pojo.Book;

import org.junit.Test;

import org.junit.runner.RunWith;

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

import org.springframework.test.context.ContextConfiguration;

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

import java.util.List;

/**

  • @author : cunyu

结尾

查漏补缺:Java岗 千+道面试题Java基础+全家桶+容器+反射+异常等

这不止是一份面试清单,更是一种”被期望的责任“,因为有无数个待面试者,希望从这篇文章中,找出通往期望公司的”钥匙“,所以上面每道选题都是结合我自身的经验于千万个面试题中经过艰辛的两周,一个题一个题筛选出来再次对好答案和格式做出来的,面试的答案也是再三斟酌,深怕误人子弟是小,影响他人仕途才是大过,也希望您能把这篇文章分享给更多的朋友,让他帮助更多的人,帮助他人,快乐自己,最后,感谢您的阅读。

由于细节内容实在太多啦,在这里我花了两周的时间把这些答案整理成一份文档了,在这里只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

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

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

87597)]

这不止是一份面试清单,更是一种”被期望的责任“,因为有无数个待面试者,希望从这篇文章中,找出通往期望公司的”钥匙“,所以上面每道选题都是结合我自身的经验于千万个面试题中经过艰辛的两周,一个题一个题筛选出来再次对好答案和格式做出来的,面试的答案也是再三斟酌,深怕误人子弟是小,影响他人仕途才是大过,也希望您能把这篇文章分享给更多的朋友,让他帮助更多的人,帮助他人,快乐自己,最后,感谢您的阅读。

由于细节内容实在太多啦,在这里我花了两周的时间把这些答案整理成一份文档了,在这里只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值