SSM商城项目实战:客户管理

SSM商城项目实战:客户管理

1. 项目背景和需求分析

在一个电商平台中,客户管理是非常重要的一环。通过对客户信息的管理,可以更好地了解客户需求,提供个性化的服务,增强客户满意度。本项目旨在实现一个简单的客户管理功能,包括客户信息的添加、修改、删除和查询等操作。

2. 技术选型和准备工作

本项目使用SSM(Spring+SpringMVC+MyBatis)框架进行开发,数据库采用MySQL。在开始之前,需要准备好以下环境和工具:

  • JDK 8+
  • Eclipse 或者 IntelliJ IDEA
  • Maven
  • Tomcat
  • MySQL

3. 数据库设计和创建

在MySQL中创建一个名为customer的数据库,并创建一个名为customer_info的表,用于存储客户信息。表结构如下:

CREATE TABLE `customer_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `age` int(11) NOT NULL,
  `gender` varchar(10) NOT NULL,
  `email` varchar(50) NOT NULL,
  `phone` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4. 项目搭建和配置

4.1 创建Maven项目

在Eclipse或者IntelliJ IDEA中创建一个Maven项目,添加以下依赖:

<!-- Spring -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.9</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.9</version>
</dependency>

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.7</version>
</dependency>

<!-- 数据库驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

4.2 配置Spring和MyBatis

src/main/resources目录下创建一个spring-config.xml文件,配置Spring和MyBatis的相关组件和属性。

<!-- spring-config.xml -->
<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: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/tx
                           http://www.springframework.org/schema/tx/spring-tx.xsd">
    
    <!-- 数据源配置 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/customer?useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=UTC" />
        <property name="username" value="root" />
        <property name="password" value="password" />
    </bean>
    
    <!-- MyBatis配置 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:mapper/*.xml" />
    </bean>
    
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory" />
    </bean>
    
    <!-- 扫描Mapper接口 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.example.mapper" />
    </bean>
    
    <!-- 开启事务管理 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" />
    
    <!-- 扫描Service组件 -->
    <context:component-scan base-package="com.example.service" />
    
</beans>

4.3 创建实体类和Mapper接口

src/main/java目录下创建一个com.example.entity包,并在该包下创建一个Customer实体类,用于封装客户信息。

public class Customer {
    private Integer id;
    private String name;
    private Integer age;
    private String gender;
    private String email;
    private String phone;
    // 省略getter和setter方法
}

src/main/java目录下创建一个com.example.mapper包,并在该包下创建一个CustomerMapper接口,用于定义对客户信息的数据库操作。

public interface CustomerMapper {
    void addCustomer(Customer customer);
    void updateCustomer(Customer customer);
    void deleteCustomer(Integer id);
    Customer getCustomer(Integer id);
    List<Customer> getAllCustomers();
}

4.4 创建Mapper映射文件

src/main/resources目录下创建一个mapper目录,并在该目录下创建一个CustomerMapper.xml文件,用于定义SQL语句和映射关系。

<!-- CustomerMapper.xml -->
<mapper namespace="com.example.mapper.CustomerMapper">
    
    <insert id="addCustomer" parameterType="com.example.entity.Customer">
        INSERT INTO customer_info (name, age, gender, email, phone)
        VALUES (#{name}, #{age}, #{gender}, #{email}, #{phone})
    </insert>
    
    <update id="updateCustomer" parameterType="com.example.entity.Customer">
        UPDATE customer_info
        SET name = #{name}, age = #{age}, gender = #{gender}, email = #{email}, phone = #{phone}
        WHERE id = #{id}
    </update>
    
    <delete id="deleteCustomer" parameterType="java.lang.Integer">
        DELETE FROM customer_info
        WHERE id = #{id}
    </delete>
    
    <select id="getCustomer" parameterType="java.lang.Integer" resultType="com.example.entity.Customer">
        SELECT * FROM customer_info
        WHERE id = #{id}
    </select>
    
    <select id="getAllCustomers" resultType="com.example.entity.Customer">
        SELECT * FROM customer_info
 customerMapper.addCustomer(customer);
    }
    
    @Override
    public void updateCustomer(Customer customer) {
        customerMapper.updateCustomer(customer);
    }
    
    @Override
    public void deleteCustomer(Integer id) {
        customerMapper.deleteCustomer(id);
    }
    
    @Override
    public Customer getCustomer(Integer id) {
        return customerMapper.getCustomer(id);
    }
    
    @Override
    public List<Customer> getAllCustomers() {
        return customerMapper.getAllCustomers();
    }
}

4.6 创建Controller类

src/main/java目录下创建一个com.example.controller包,并在该包下创建一个CustomerController类,用于处理客户信息的请求。

@Controller
@RequestMapping("/customer")
public class CustomerController {
    
    @Autowired
    private CustomerService customerService;
    
    @RequestMapping("/add")
    public String addCustomer(Customer customer) {
        customerService.addCustomer(customer);
        return "redirect:/customer/list";
    }
    
    @RequestMapping("/update")
    public String updateCustomer(Customer customer) {
        customerService.updateCustomer(customer);
        return "redirect:/customer/list";
    }
    
    @RequestMapping("/delete/{id}")
    public String deleteCustomer(@PathVariable("id") Integer id) {
        customerService.deleteCustomer(id);
        return "redirect:/customer/list";
    }
    
    @RequestMapping("/get/{id}")
    public String getCustomer(@PathVariable("id") Integer id, Model model) {
        Customer customer = customerService.getCustomer(id);
        model.addAttribute("customer", customer);
        return "customer";
    }
    
    @RequestMapping("/list")
    public String getAllCustomers(Model model) {
        List<Customer> customers = customerService.getAllCustomers();
        model.addAttribute("customers", customers);
        return "customerList";
    }
}

4.7 创建视图文件

src/main/webapp/WEB-INF/views目录下创建一个customer.jsp文件,用于显示单个客户信息。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Customer</title>
</head>
<body>
    <h1>Customer Information</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Gender</th>
            <th>Email</th>
            <th>Phone</th>
        </tr>
        <tr>
            <td>${customer.id}</td>
            <td>${customer.name}</td>
            <td>${customer.age}</td>
            <td>${customer.gender}</td>
            <td>${customer.email}</td>
            <td>${customer.phone}</td>
        </tr>
    </table>
</body>
</html>

src/main/webapp/WEB-INF/views目录下创建一个customerList.jsp文件,用于显示客户列表。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Customer List</title>
</head>
<body>
    <h1>Customer List</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Gender</th>
            <th>Email</th>
            <th>Phone</th>
            <th>Action</th>
        </tr>
        <c:forEach items="${customers}" var="customer">
            <tr>
                <td>${customer.id}</td>
                <td>${customer.name}</td>
                <td>${customer.age}</td>
                <td>${customer.gender}</td>
                <td>${customer.email}</td>
                <td>${customer.phone}</td>
                <td>
                    <a href="/customer/get/${customer.id}">View</a>
                    <a href="/customer/delete/${customer.id}">Delete</a>
                </td>
            </tr>
        </c:forEach>
    </table>
    <br>
    <a href="/customer/add">Add Customer</a>
</body>
</html>

4.8 创建Web配置类

src/main/java目录下创建一个com.example.config包,并在该包下创建一个WebConfig类,用于配置Web相关的内容。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig implements WebMvcConfigurer {
    
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp");
    }
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("/static/");
    }
}

4.9 创建应用启动类

src/main/java目录下创建一个com.example包,并在该包下创建一个Application类,用于启动应用。

@SpringBootApplication
@Import(WebConfig.class)
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

4.10 编译和运行

使用Maven编译项目,并使用Spring Boot插件运行应用。

mvn clean package
mvn spring-boot:run

访问http://localhost:8080/customer/list,即可看到客户列表页面。

在本教程中,我们学习了如何使用Spring Boot和Spring MVC构建一个简单的客户管理系统。我们了解了以下内容:

  1. 创建一个Spring Boot项目,并添加所需的依赖。
  2. 创建一个Customer实体类,用于表示客户信息。
  3. 创建一个CustomerService接口和CustomerServiceImpl实现类,用于处理客户相关的业务逻辑。
  4. 创建一个CustomerController类,用于处理客户相关的请求和响应。
  5. 创建视图文件,用于显示客户信息和客户列表。
  6. 创建Web配置类,用于配置视图解析器和静态资源处理器。
  7. 创建应用启动类,用于启动应用。

通过完成这个项目,我们可以学习到如何使用Spring Boot和Spring MVC来构建一个简单的Web应用,并了解到了一些常用的注解和配置。希望这个教程对你有所帮助!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SSM框架学习宝典:入门、进阶、精通,全方位代码项目资 一、探索SSM的无限可能 SSM(Spring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您从零基础开始,逐步掌握SSM的核心技术和最佳实践,助您在Java Web开发领域更上一层楼。 二、资料亮点 基础教程与练习项目:从基础知识讲起,结合实际练习项目,让您轻松上手SSM开发。 进阶技术与案例分析:针对进阶开发者,提供深入的技术探讨和案例分析,助您深入理解SSM的高级特性。 实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您学习SSM的得力助手。适用于Java Web开发、企业级应用开发、个人项目实践等多个领域。 四、使用建议 系统学习:按照资料提供的顺序进行系统学习,确保知识体系的完整性。 实践为王:在学习过程中注重实践操作,通过实际项目加深理解。 持续反馈与调整:根据学习进度和反馈,适时调整学习策略,提高学习效果。 五、安全与责任 在使用SSM框架进行开发时,请确保遵循最佳实践和安全准则,以保障系统的稳定性和安全性。在使用提供的资料时,请遵守版权法规,尊重原作者的权益。让我们共同为推动SSM技术的发展而努力!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹山全栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值