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,等待依赖下载完成
三、数据库设计与配置

  1. 创建数据库表(按需求设计)
    在 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)→ 前端页面顺序开发。

  1. 实体类(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 findByStatus(String status);
// 按经纪人ID查询(经纪人负责的房产)
List findByAgentId(String agentId);
// 多条件查询(户型、地址等,可自定义方法)
List findByRoomTypeAndAddressContaining(
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
预览

登录


注册(仅顾客)
五、核心功能实现要点 用户登录与权限控制: 使用 Spring Security 框架(需在 pom.xml 添加依赖),区分顾客、经纪人、管理员角色。 登录时验证账号密码,根据角色跳转至对应首页。 房产编号生成: 在 Service 层通过LocalDate获取当前日期,结合数据库中房产总数生成 4 位序号(如202511170001)。 多条件查询: 在 HouseRepository 中定义复合查询方法,如findByRoomTypeAndAddressContainingAndBuildYearBetween(...),接收前端传递的参数。 状态流转: 顾客下单→状态改为 “意向”;经纪人确认→改为 “售出”;管理员授权→改为 “待售”;管理员操作→改为 “停售”。 六、测试与调试 启动项目:点击 IDEA 右上角Run按钮,启动 Spring Boot 应用(默认端口 8080)。 访问测试:在浏览器输入http://localhost:8080,测试登录、注册、新增房产等功能。 调试技巧: 使用 IDEA 的断点调试(在代码行左侧点击设置断点,按Debug启动)。 查看控制台日志,检查 SQL 执行是否正确、是否有异常信息。 七、打包与提交 打包项目:在 IDEA 右侧Maven面板,执行clean package,生成target/house-management-0.0.1-SNAPSHOT.jar。 备份数据库:使用 MySQL 的mysqldump命令导出house_db数据库为 SQL 文件。 按要求命名:将 JAR 包、源代码(src 目录)、数据库备份文件放入文件夹,命名为 “班级学号姓名”,压缩后提交。 按以上步骤逐步实现,可完成房产信息管理系统的核心功能。开发中需注意代码规范(注释、命名),并优先实现评分占比高的功能(如页面展示、新增房产、查询等)。
posted @ 2025-11-23 12:45  muyuxiaxing  阅读(6)  评论(0)    收藏  举报