11.13
创建项目(Spring Boot 初始化)
打开 IDEA,选择File > New > Project
左侧选择Spring Initializr,默认使用start.spring.io,点击Next
填写项目信息:
Group:com.example(自定义,如班级相关的包名)
Artifact:house-management
Type:Maven
Java Version:8
Package:com.example.housemgmt(自动生成)
选择依赖(根据需求勾选):
Web:Spring Web(开发 Web 接口)
SQL:Spring Data JPA(操作数据库)、MySQL Driver(连接 MySQL)
Template Engines:Thymeleaf(渲染前端页面)
Developer Tools:Lombok(简化实体类)
选择项目保存路径,点击Finish,等待依赖下载完成
三、数据库设计与配置
- 创建数据库表(按需求设计)
在 MySQL 中执行以下 SQL,创建 3 张核心表:
sql
-- 1. 房产基本信息表
CREATE TABLE house (
house_id VARCHAR(20) PRIMARY KEY, -- 格式:年月日+4位序号(如202012200001)
room_type VARCHAR(20) NOT NULL, -- 户型(四室两厅等)
address VARCHAR(100) NOT NULL, -- 地址(XX省XX市...)
build_year INT NOT NULL, -- 建造年份
area DECIMAL(10,2) NOT NULL, -- 面积
price DECIMAL(12,2) NOT NULL, -- 售价
status VARCHAR(10) NOT NULL DEFAULT '在售', -- 状态:在售/待售/意向/售出/停售
agent_id VARCHAR(8), -- 关联经纪人工号(8位)
user_id INT -- 关联顾客ID(自增)
);
-- 2. 房产经纪人表
CREATE TABLE agent (
agent_id VARCHAR(8) PRIMARY KEY, -- 工号(8位数字)
name VARCHAR(20) NOT NULL,
address VARCHAR(100) NOT NULL,
phone VARCHAR(11) NOT NULL, -- 11位手机号
password VARCHAR(50) NOT NULL DEFAULT '123456' -- 初始密码
);
-- 3. 顾客表
CREATE TABLE customer (
user_id INT PRIMARY KEY AUTO_INCREMENT, -- 自增ID
name VARCHAR(20) NOT NULL,
sex VARCHAR(2) NOT NULL, -- 男/女
id_card VARCHAR(18) NOT NULL UNIQUE, -- 18位身份证(含X)
phone VARCHAR(11) NOT NULL, -- 11位手机号
address VARCHAR(100) NOT NULL,
password VARCHAR(50) NOT NULL, -- 登录密码
is_approved TINYINT DEFAULT 0 -- 是否审核通过(0:未通过,1:通过)
);
-- 4. 管理员表(额外补充,用于登录)
CREATE TABLE admin (
admin_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL UNIQUE,
password VARCHAR(50) NOT NULL
);
2. 配置数据库连接
在项目src/main/resources/application.properties中添加配置:
properties
数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/house_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=root(你的MySQL用户名)
spring.datasource.password=123456(你的MySQL密码)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
JPA配置(自动生成SQL,打印日志)
spring.jpa.hibernate.ddl-auto=update(更新表结构,无需手动改表)
spring.jpa.show-sql=true(控制台打印SQL)
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
Thymeleaf配置(开发时关闭缓存)
spring.thymeleaf.cache=false
四、代码开发(分层实现)
按实体类(Entity)→ 数据访问层(Repository)→ 服务层(Service)→ 控制层(Controller)→ 前端页面顺序开发。
- 实体类(Entity)
在com.example.housemgmt.entity包下创建实体类,映射数据库表:
java
运行
// 房产实体类
@Data // Lombok注解,自动生成getter/setter
@Entity
@Table(name = "house")
public class House {
@Id
private String houseId; // 房产编号
private String roomType; // 户型
private String address; // 地址
private Integer buildYear; // 建造年份
private BigDecimal area; // 面积
private BigDecimal price; // 售价
private String status; // 状态
private String agentId; // 关联经纪人工号
private Integer userId; // 关联顾客ID
}
// 经纪人实体类(类似,映射agent表)
// 顾客实体类(类似,映射customer表)
// 管理员实体类(类似,映射admin表)
2. 数据访问层(Repository)
在com.example.housemgmt.repository包下创建接口,继承JpaRepository实现数据库操作:
java
运行
// 房产数据访问接口
public interface HouseRepository extends JpaRepository<House, String> {
// 按状态查询(如查询在售房产)
List
// 按经纪人ID查询(经纪人负责的房产)
List
// 多条件查询(户型、地址等,可自定义方法)
List
String roomType, String address
);
}
// 经纪人、顾客、管理员的Repository类似,根据需求定义查询方法
3. 服务层(Service)
在com.example.housemgmt.service包下创建服务类,实现业务逻辑:
java
运行
// 房产服务类
@Service
public class HouseService {
@Autowired
private HouseRepository houseRepository;
// 新增房产(生成编号:当前年月日+4位顺序号)
public void addHouse(House house) {
// 生成houseId:例如202511170001
String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
long count = houseRepository.count();
String seq = String.format("%04d", count + 1); // 4位序号
house.setHouseId(date + seq);
house.setStatus("在售"); // 默认状态
houseRepository.save(house);
}
// 其他业务方法:查询、修改状态、授权经纪人等
}
// 经纪人、顾客、管理员的Service类似,实现各自业务(如顾客注册、审核等)
4. 控制层(Controller)
在com.example.housemgmt.controller包下创建控制器,处理前端请求:
java
运行
// 房产控制器(管理员操作)
@Controller
@RequestMapping("/admin/house")
public class AdminHouseController {
@Autowired
private HouseService houseService;
// 跳转到新增房产页面
@GetMapping("/add")
public String toAddPage(Model model) {
model.addAttribute("house", new House());
return "admin/house-add"; // 对应Thymeleaf页面
}
// 提交新增房产
@PostMapping("/add")
public String addHouse(House house) {
houseService.addHouse(house);
return "redirect:/admin/house/list"; // 跳转回列表页
}
// 其他接口:授权经纪人、停售房产等
}
// 分别创建顾客、经纪人、管理员的Controller,处理对应角色的请求
5. 前端页面(Thymeleaf)
在src/main/resources/templates下按角色创建页面:
公共页面:login.html(登录页)、register.html(顾客注册页)
顾客页面:customer/index.html(顾客首页)、customer/house-list.html(浏览房产)等
经纪人页面:agent/index.html(经纪人首页)、agent/transaction.html(房产交易)等
管理员页面:admin/index.html(管理员首页)、admin/house-add.html(新增房产)等
页面示例(登录页login.html):
html
预览

浙公网安备 33010602011771号