前言
小白在入门Java后,已经知道了Java的一些基本类型和语法,今天来做一个MVC快速搭建酒店管理系统。需求如下:
一、技术介绍
1、Spring Boot:
Spring Boot是一种基于Spring框架的开发工具,它通过提供自动化配置和约定优于配置的原则,简化了Java应用程序的开发过程。Spring Boot能够极大地提高开发效率,同时还提供了丰富的插件和功能,例如内嵌服务器、自动化依赖管理和配置,以及集成了许多常用的开发组件。
2、Java Persistence API
JPA是Java平台上的一种ORM(对象关系映射)规范,它提供了一种将Java对象映射到关系数据库中的方式。与传统的SQL编程相比,使用JPA可以更加方便地操作数据库,提供了对象级别的查询和持久化操作,减少了开发者的数据库访问困扰。
3、Thymeleaf
Thymeleaf是一种用于构建服务器端Java模板的现代化服务器端Java模板引擎。它允许开发人员将动态数据呈现到HTML页面,并支持强大的表达式语言和模板布局。Thymeleaf的语法简单易用,使得前端开发变得更加容易。
4、MySQL
MySQL是一个开源的关系型数据库管理系统,被广泛用于Web应用程序开发。它具有卓越的性能、可靠性和可扩展性,提供了丰富的查询语言和存储过程支持。通过与Spring Boot和JPA的结合,我们可以轻松地进行数据库操作,实现数据的持久化和查询。
5、Bootstrap
Bootstrap是一个流行的前端开发框架,它提供了丰富的CSS和JavaScript组件,可以帮助我们快速搭建现代化的用户界面。通过集成Bootstrap,我们可以对Web应用程序的外观和用户交互进行美化和增强,使得应用在不同设备上的显示效果更加统一和友好。
二、过程
1、新建项目
打开idea,点击新建,然后选择Spring lnitializr,修改项目名字(默认的是demo,demo1…以此类推),修改储存路径等。JDK跟Java选择相同版本的17或者20,建议都选17。
选择依赖,选Lombok、Spring Web、Thymeleaf、Spring Data JPA、MySQL Driver这五个依赖。
然后项目创建成功。如图:
2、编写model类,博主这里写的是酒店的所以就创建了一个Room(房间)类。代码如下:
import jakarta.persistence.*;
import lombok.Data;
@Data
@Entity
@Table(name = "room")
public class Room {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
//酒店名称
@Column(name="hotel")
private String hotel;
//入住客户
@Column(name="Customers")
private String customers;
//客户身份证
@Column(name="identity_Card")
private String identityCard;
//房间号
@Column(name="rooms")
private String rooms;
//房型
@Column(name="room_Type")
private String roomType;
//价格
@Column(name="price")
private double price;
}
3、编写repository类。代码如下:
import com.example.hotelsystem.model.Room;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface RoomRepository extends JpaRepository<Room, Long> {
//通过酒店名跟房间号来查找房间是否入住
@Query("select h from Room h where h.rooms like %:name%")
List<Room> findByRoom(@Param("name") String name);
}
4、编写service类,代码如下:
import com.example.hotelsystem.model.Room;
import org.springframework.data.domain.Page;
import java.util.List;
public interface RoomService {
List<Room> getAllRoom();
void saveRoom(Room room);
List<Room> findByRoomContaining(String name);
Room getRoomByid(Long id);
void deleteRoomByid(Long id);
Page<Room> findPaginated(int pageNo, int pageSize, String sortField, String sortDirection);
}
import com.example.hotelsystem.model.Room;
import com.example.hotelsystem.repository.RoomRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org