民宿管理模块是民宿预订管理系统中非常重要的一个模块,它主要用于对民宿信息进行管理,包括添加、修改、查询、删除等操作。下面是基于SSM架构的民宿管理模块的实现步骤:

  1. 实体类的设计

首先需要设计民宿信息的实体类,包括民宿的名称、地址、价格、图片等信息。可以在src/main/java目录下创建实体类的包,例如com.example.entity。

在该包下创建一个名为House的Java类,定义民宿的各个属性:

public class House {

    private int id; // 民宿ID
    private String name; // 民宿名称
    private String address; // 民宿地址
    private double price; // 民宿价格
    private String image; // 民宿图片

    // getter和setter方法
}
  1. DAO层的设计

在src/main/java目录下创建DAO接口的包,例如com.example.dao。在该包下创建一个名为HouseDao的Java接口,定义对民宿信息进行操作的方法,如添加、修改、查询、删除等。

public interface HouseDao {

    // 添加民宿信息
    public int addHouse(House house);

    // 修改民宿信息
    public int updateHouse(House house);

    // 根据ID查询民宿信息
    public House getHouseById(int id);

    // 查询所有民宿信息
    public List<House> getAllHouses();

    // 根据ID删除民宿信息
    public int deleteHouse(int id);
}
  1. DAO层的实现

在src/main/java目录下创建DAO接口实现类的包,例如com.example.dao.impl。在该包下创建一个名为HouseDaoImpl的Java类,实现HouseDao接口。

@Repository
public class HouseDaoImpl implements HouseDao {

    @Autowired
    private SqlSession sqlSession;

    // 添加民宿信息
    public int addHouse(House house) {
        return sqlSession.insert('com.example.mapper.HouseMapper.addHouse', house);
    }

    // 修改民宿信息
    public int updateHouse(House house) {
        return sqlSession.update('com.example.mapper.HouseMapper.updateHouse', house);
    }

    // 根据ID查询民宿信息
    public House getHouseById(int id) {
        return sqlSession.selectOne('com.example.mapper.HouseMapper.getHouseById', id);
    }

    // 查询所有民宿信息
    public List<House> getAllHouses() {
        return sqlSession.selectList('com.example.mapper.HouseMapper.getAllHouses');
    }

    // 根据ID删除民宿信息
    public int deleteHouse(int id) {
        return sqlSession.delete('com.example.mapper.HouseMapper.deleteHouse', id);
    }
}
  1. Mapper文件的编写

在src/main/resources目录下创建mapper文件夹,用于存放Mapper文件。在该文件夹下创建一个名为HouseMapper.xml的文件,定义SQL语句。

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'>

<mapper namespace='com.example.mapper.HouseMapper'>
    <!-- 添加民宿信息 -->
    <insert id='addHouse' parameterType='com.example.entity.House'>
        insert into house(name, address, price, image) values(#{name}, #{address}, #{price}, #{image})
    </insert>

    <!-- 修改民宿信息 -->
    <update id='updateHouse' parameterType='com.example.entity.House'>
        update house set name = #{name}, address = #{address}, price = #{price}, image = #{image} where id = #{id}
    </update>

    <!-- 根据ID查询民宿信息 -->
    <select id='getHouseById' parameterType='int' resultType='com.example.entity.House'>
        select * from house where id = #{id}
    </select>

    <!-- 查询所有民宿信息 -->
    <select id='getAllHouses' resultType='com.example.entity.House'>
        select * from house
    </select>

    <!-- 根据ID删除民宿信息 -->
    <delete id='deleteHouse' parameterType='int'>
        delete from house where id = #{id}
    </delete>
</mapper>
  1. Service层的设计

在src/main/java目录下创建Service接口的包,例如com.example.service。在该包下创建一个名为HouseService的Java接口,定义对民宿信息进行操作的方法,如添加、修改、查询、删除等。

public interface HouseService {

    // 添加民宿信息
    public int addHouse(House house);

    // 修改民宿信息
    public int updateHouse(House house);

    // 根据ID查询民宿信息
    public House getHouseById(int id);

    // 查询所有民宿信息
    public List<House> getAllHouses();

    // 根据ID删除民宿信息
    public int deleteHouse(int id);
}
  1. Service层的实现

在src/main/java目录下创建Service接口实现类的包,例如com.example.service.impl。在该包下创建一个名为HouseServiceImpl的Java类,实现HouseService接口。

@Service
public class HouseServiceImpl implements HouseService {

    @Autowired
    private HouseDao houseDao;

    // 添加民宿信息
    public int addHouse(House house) {
        return houseDao.addHouse(house);
    }

    // 修改民宿信息
    public int updateHouse(House house) {
        return houseDao.updateHouse(house);
    }

    // 根据ID查询民宿信息
    public House getHouseById(int id) {
        return houseDao.getHouseById(id);
    }

    // 查询所有民宿信息
    public List<House> getAllHouses() {
        return houseDao.getAllHouses();
    }

    // 根据ID删除民宿信息
    public int deleteHouse(int id) {
        return houseDao.deleteHouse(id);
    }
}
  1. 控制器的设计

在src/main/java目录下创建控制器的包,例如com.example.controller。在该包下创建一个名为HouseController的Java类,用于处理与民宿信息相关的请求。

@Controller
@RequestMapping('/house')
public class HouseController {

    @Autowired
    private HouseService houseService;

    // 跳转到添加民宿信息页面
    @RequestMapping('/toAddHouse')
    public String toAddHouse() {
        return 'addHouse';
    }

    // 添加民宿信息
    @RequestMapping('/addHouse')
    public String addHouse(House house, Model model) {
        int result = houseService.addHouse(house);
        if (result > 0) {
            model.addAttribute('msg', '添加民宿信息成功!');
        } else {
            model.addAttribute('msg', '添加民宿信息失败,请重试!');
        }
        return 'addHouse';
    }

    // 跳转到修改民宿信息页面
    @RequestMapping('/toUpdateHouse')
    public String toUpdateHouse(int id, Model model) {
        House house = houseService.getHouseById(id);
        model.addAttribute('house', house);
        return 'updateHouse';
    }

    // 修改民宿信息
    @RequestMapping('/updateHouse')
    public String updateHouse(House house, Model model) {
        int result = houseService.updateHouse(house);
        if (result > 0) {
            model.addAttribute('msg', '修改民宿信息成功!');
        } else {
            model.addAttribute('msg', '修改民宿信息失败,请重试!');
        }
        return 'updateHouse';
    }

    // 查询所有民宿信息
    @RequestMapping('/getAllHouses')
    public String getAllHouses(Model model) {
        List<House> houses = houseService.getAllHouses();
        model.addAttribute('houses', houses);
        return 'houseList';
    }

    // 根据ID删除民宿信息
    @RequestMapping('/deleteHouse')
    public String deleteHouse(int id, Model model) {
        int result = houseService.deleteHouse(id);
        if (result > 0) {
            model.addAttribute('msg', '删除民宿信息成功!');
        } else {
            model.addAttribute('msg', '删除民宿信息失败,请重试!');
        }
        return 'redirect:/house/getAllHouses';
    }
}
  1. 视图层的设计

在src/main/webapp目录下创建视图的文件夹,例如WEB-INF/views。在该文件夹下创建各个页面的JSP文件,如addHouse.jsp、updateHouse.jsp和houseList.jsp等。

addHouse.jsp

<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%>
<!DOCTYPE html>
<html>
<head>
    <title>添加民宿信息</title>
</head>
<body>
    <h1>添加民宿信息</h1>
    <form action='${pageContext.request.contextPath}/house/addHouse' method='post'>
        民宿名称:<input type='text' name='name'><br>
        民宿地址:<input type='text' name='address'><br>
        民宿价格:<input type='text' name='price'><br>
        民宿图片:<input type='text' name='image'><br>
        <input type='submit' value='添加'>
    </form>
    <p>${msg}</p>
</body>
</html>

updateHouse.jsp

<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%>
<!DOCTYPE html>
<html>
<head>
    <title>修改民宿信息</title>
</head>
<body>
    <h1>修改民宿信息</h1>
    <form action='${pageContext.request.contextPath}/house/updateHouse' method='post'>
        民宿ID:<input type='text' name='id' value='${house.id}' readonly><br>
        民宿名称:<input type='text' name='name' value='${house.name}'><br>
        民宿地址:<input type='text' name='address' value='${house.address}'><br>
        民宿价格:<input type='text' name='price' value='${house.price}'><br>
        民宿图片:<input type='text' name='image' value='${house.image}'><br>
        <input type='submit' value='修改'>
    </form>
    <p>${msg}</p>
</body>
</html>

houseList.jsp

<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%>
<!DOCTYPE html>
<html>
<head>
    <title>民宿列表</title>
</head>
<body>
    <h1>民宿列表</h1>
    <table border='1'>
        <tr>
            <th>民宿ID</th>
            <th>民宿名称</th>
            <th>民宿地址</th>
            <th>民宿价格</th>
            <th>民宿图片</th>
            <th>操作</th>
        </tr>
        <c:forEach items='${houses}' var='house'>
            <tr>
                <td>${house.id}</td>
                <td>${house.name}</td>
                <td>${house.address}</td>
                <td>${house.price}</td>
                <td>${house.image}</td>
                <td>
                    <a href='${pageContext.request.contextPath}/house/toUpdateHouse?id=${house.id}'>修改</a>
                    <a href='${pageContext.request.contextPath}/house/deleteHouse?id=${house.id}'>删除</a>
                </td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>
  1. 配置文件的设计

在src/main/resources目录下创建配置文件的文件夹,例如config。在该文件夹下创建各个配置文件。

database.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/house?useUnicode=true&characterEncoding=utf8&useSSL=false
jdbc.username=root
jdbc.password=123456

mybatis-config.xml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE configuration PUBLIC '-//mybatis.org//DTD Config 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-config.dtd'>
<configuration>
    <settings>
        <setting name='logImpl' value='STDOUT_LOGGING'/>
    </settings>
    <typeAliases>
        <typeAlias type='com.example.entity.House' alias='House'/>
    </typeAliases>
    <mappers>
        <mapper resource='mapper/HouseMapper.xml'/>
    </mappers>
</configuration>

spring-database.xml

<?xml version='1.0' encoding='UTF-8'?>
<beans xmlns='http://www.springframework.org/schema/beans'
       xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:context='http://www.springframework.org/schema/context'
       xmlns:mvc='http://www.springframework.org/schema/mvc' xmlns:tx='http://www.springframework.org/schema/tx'
       xsi:schemaLocation='
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd'>

    <!-- 加载属性文件 -->
    <context:property-placeholder location='classpath:config/database.properties' />

    <!-- 配置数据源 -->
    <bean id='dataSource' class='com.alibaba.druid.pool.DruidDataSource' init-method='init' destroy-method='close'>
        <property name='driverClassName' value='${jdbc.driver}' />
        <property name='url' value='${jdbc.url}' />
        <property name='username' value='${jdbc.username}' />
        <property name='password' value='${jdbc.password}' />
        <property name='maxActive' value='20' />
        <property name='initialSize' value='1' />
        <property name='maxWait' value='60000' />
        <property name='minIdle' value='1' />
        <property name='timeBetweenEvictionRunsMillis' value='60000' />
        <property name='minEvictableIdleTimeMillis' value='300000' />
        <property name='validationQuery' value='SELECT 1 FROM DUAL' />
        <property name='testWhileIdle' value='true' />
        <property name='testOnBorrow' value='false' />
        <property name='testOnReturn' value='false' />
        <property name='poolPreparedStatements' value='true' />
        <property name='maxPoolPreparedStatementPerConnectionSize' value='20' />
        <property name='filters' value='stat' />
    </bean>

    <!-- 配置MyBatis -->
    <bean id='sqlSessionFactory' class='org.mybatis.spring.SqlSessionFactoryBean'>
        <property name='dataSource' ref='dataSource' />
        <property name='configLocation' value='classpath:config/mybatis-config.xml' />
    </bean>

    <!-- 配置事务管理器 -->
    <bean id='transactionManager' class='org.springframework.jdbc.datasource.DataSourceTransactionManager'>
        <property name='dataSource' ref='dataSource' />
    </bean>

    <!-- 开启注解支持 -->
    <tx:annotation-driven />

    <!-- 扫描组件包 -->
    <context:component-scan base-package='com.example' />

    <!-- 静态资源处理 -->
    <mvc:resources mapping='/static/**' location='/static/' />
    <mvc:default-servlet-handler />

    <!-- 配置视图解析器 -->
    <bean id='viewResolver' class='org.springframework.web.servlet.view.InternalResourceViewResolver'>
        <property name='prefix' value='/WEB-INF/views/' />
        <property name='suffix' value='.jsp' />
    </bean>

</beans>

web.xml

<?xml version='1.0' encoding='UTF-8'?>
<web-app version='3.1' xmlns='http://xmlns.jcp.org/xml/ns/javaee'
         xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
         xsi:schemaLocation='http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd'>

    <!-- 指定Spring配置文件的位置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:config/spring-database.xml</param-value>
    </context-param>

    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:config/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- 配置DispatcherServlet映射 -->
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

至此,基于SSM架构的民宿管理模块实现完成。可以启动服务器,访问http://localhost:8080/house/getAllHouses查看民宿列表。

SSM民宿预订管理系统:民宿管理模块实现详解

原文地址: https://www.cveoy.top/t/topic/nJWs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录