当前位置: 首页 > article >正文

ssm整合项目实现基础查询功能

目录

实现

       1. 首先创建数据库

        2. 创建项目

        3. 右键main创建资源目录

        4. 部署服务器

5. 注入相关依赖

6.创建层结构

7. 配置Spring

8. 配置SpringMVC

9. 配置Mybatis

10.创建实体类

11.创建Mapper接口和sql映射文件

12.创建服务层

13. 创建控制器层


实现

       1. 首先创建数据库

创建表格(我使用的是mysql的可视化软件,可实现由鼠标操作)

        2. 创建项目

创建一个MavenjavaWeb项目。

        (我使用的IDEA是21版本的,其他版本可能模块位置会有所不同,但基本功能都会有)

        创建好之后基本的目录结构(index.jsp我删掉了,因为这个项目里我用的是html)

        3. 右键main创建资源目录

        java和resources

        4. 部署服务器

        点击应用确认即可。

5. 注入相关依赖

        在pom.xml文件中添加Spring,SpringMVC,Mybatis,druid,mysql等依赖坐标。(如果有不常用的,可去Maven的中央仓库找https://mvnrepository.com/)

注入的依赖项如下:

代码:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.qcby</groupId>
  <artifactId>SSMDemo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>


  <properties>
    <spring.version>5.0.2.RELEASE</spring.version>
    <mybatis.version>3.5.7</mybatis.version>
    <mybatis.spring.version>2.0.6</mybatis.spring.version>
    <druid.version>1.2.8</druid.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.0</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--SpringMVC-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>

<!--    mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>${mybatis.spring.version}</version>
    </dependency>

    <!-- 德鲁伊连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>${druid.version}</version>
    </dependency>

    <!-- MySQL 驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.29</version>
    </dependency>

    <!--servlet API-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

    <!--日志-->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>

    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring4</artifactId>
      <version>3.0.9.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>


  </dependencies>

</project>

6.创建层结构

7. 配置Spring

        在项目的资源目录下创建Spring的配置文件,如applicationContext.xml,配置数据源包括数据库连接信息、通过扫描包的方式,让 Spring 自动扫描并管理相关的 Bean。

<?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"
       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">
   <!-- 开启组件扫描 -->
    <context:component-scan base-package="com.qcby.service"/>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/ssmdemo"/>
        <property name="username" value="root"/>
        <property name="password" value="2020"/>
    </bean>

    <!-- 配置 SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

    <!-- 配置 Mapper 扫描器 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.qcby.dao"/>
    </bean>
</beans>

8. 配置SpringMVC

        创建SpringMVC的配置文件。配置处理器映射器(HandlerMapping)和处理器适配器(HandlerAdapter),用于处理请求和调用相应的控制器方法。配置视图解析器(ViewResolver),将处理结果解析为视图进行展示。同时,设置 SpringMVC 扫描的包路径,让其扫描控制器类。

<?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"
       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">

<context:component-scan base-package="com.qcby"></context:component-scan>
    <!-- 开启 Spring MVC 注解支持 -->
    <mvc:annotation-driven/>
<!--
    映射器
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

&lt;!&ndash;    处理器适配器&ndash;&gt;
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
-->

<!--    视图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine" ref="templateEngine"/>
    </bean>
    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver"/>
    </bean>
    <bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
        <property name="prefix" value="/html/"></property>
        <property name="suffix" value=".html"/>
        <property name="templateMode" value="HTML5"/>
    </bean>


<!--    视图-->
    <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"></bean>

</beans>

创建页面实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>查询</title>
</head>
<body>
<h4>查询</h4>
<form action="student/find" method="get">
    <input type="text" name="name" placeholder="请输入姓名">
    <input type="text" name="address" placeholder="请输入地址">
    <input type="submit" value="点击查询">
</form>
</body>
</html>

点击查询,实现跳转到 findOut页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>学生查询结果</title>
</head>
<body>
<b th:text="${msg}"></b>
<ul th:if="${students != null and !students.isEmpty()}">
    <li th:each="student : ${students}">
        ID: <span th:text="${student.id}"></span>,
        name: <span th:text="${student.name}"></span>,
        age: <span th:text="${student.age}"></span>,
        sex: <span th:text="${student.sex}"></span>,
        address: <span th:text="${student.address}"></span>
    </li>
</ul>
</body>
</html>

9. 配置Mybatis

        创建Mybatis的配置文件SqlMapConfig.xml。在 Spring 配置文件中,配置 MyBatis 的 SqlSessionFactoryBean,将数据源注入其中,并指定 MyBatis 配置文件的位置。还可以配置 MyBatis 的 MapperScannerConfigurer,用于自动扫描 Mapper 接口并生成代理对象。

<?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="cacheEnabled" value="true"/>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <environments default="mysql">
        <environment id="mysql">
            <!--配置事务的类型,使用本地事务策略-->
            <transactionManager type="JDBC"></transactionManager>
            <!--是否使用连接池 POOLED表示使用链接池,UNPOOLED表示不使用连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ssmdemo"/>
                <property name="username" value="root"/>
                <property name="password" value="2020"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/StudentMapper.xml"></mapper>
    </mappers>
</configuration>

10.创建实体类

        实体类对应数据库表各列。

private int id;
    private String name;
    private int age;
    private String sex;
    private String address;

        因为这里只进行查询操作,所以我没有生成构造器,只生成访问器和toString。

11.创建Mapper接口和sql映射文件

        创建 Mapper 接口,定义对数据库的操作方法,如查询、插入、更新、删除等。同时,创建对应的 SQL 映射文件(.xml),在文件中编写具体的 SQL 语句,并将 SQL 语句与 Mapper 接口中的方法进行绑定。

映射文件:

<?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.qcby.dao.StudentDao">
    <select id="findStudent" resultType="com.qcby.entity.Student">
        select * from student
        where name=#{name} and address=#{address}
    </select>
</mapper>

dao接口:

package com.qcby.dao;

import com.qcby.entity.Student;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface StudentDao {
    List<Student> findStudent(@Param("name") String name, @Param("address") String address);
}

12.创建服务层

        创建服务层接口,定义业务逻辑方法。在服务层接口的实现类中,注入 Mapper 接口,通过调用 Mapper 接口的方法来操作数据库,并实现具体的业务逻辑。同时,在服务层实现类上添加事务注解,以确保业务操作的事务性。

服务器接口:

package com.qcby.service;

import com.qcby.entity.Student;

import java.util.List;

public interface StudentService {
    List<Student> findStudent(String name,String address);
}

服务器接口实现类:

package com.qcby.service;

import com.qcby.dao.StudentDao;
import com.qcby.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentDao studentDao;


    public List<Student> findStudent(String name, String address) {
        return studentDao.findStudent(name, address);
    }
}

13. 创建控制器层

        创建控制器类,用于接收用户的请求。在控制器类中,注入服务层接口,通过调用服务层的方法来处理业务逻辑,并将处理结果返回给视图。使用注解来映射请求路径和处理方法,指定请求的方式(如 GET、POST 等)

package com.qcby.controller;


import com.qcby.entity.Student;
import com.qcby.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/student")
public class FindController {

    @Autowired
    private StudentService studentService;

    @RequestMapping("/find")
    public String find(String name,String address,Model model){
        List<Student> studentList=studentService.findStudent(name, address);
        if(studentList.isEmpty()){
            model.addAttribute("msg","未找到");
        }else{
            model.addAttribute("msg", "找到了");
            model.addAttribute("students",studentList);
        }
        return "findOut";
    }
}

14. 配置web.xml

        启动Tomcat服务器,首先加载的是web.xml。所以web.xml要配置号前端控制器等,确保找到配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">


  <!-- 配置 Spring 上下文监听器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <!--不拦截所有是html的页面请求-->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>

  <!--配置前端控制器,对浏览器发送的请求进行统一处理-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--加载springmvc.xml配置文件的位置和名称,配置的是Spring配置-->
    <init-param>
      <!--contextConfigLocation:上下文配置路径,固定值-->
      <param-name>contextConfigLocation</param-name>
      <!--classpath:类路径,值得是Java和resources文件夹-->
      <!--springmvc.xml:指的是配置文件的名称:需要配置springmvc.xml,在下面-->
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--配置启动加载-->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--开启项目时打开的页面-->
  <welcome-file-list>
    <welcome-file>/index.html</welcome-file>
  </welcome-file-list>
</web-app>

启动!!

 


http://www.kler.cn/a/568444.html

相关文章:

  • SpringBoot3—核心特性:基础特性
  • 训练营总结篇
  • 【技海登峰】Kafka漫谈系列(三)详解Kafka的数据结构与存储机制
  • 人大金仓国产数据库与PostgreSQL
  • EA SPORTS FC 25 2000+ 大型MOD整合包
  • 使用python实现线性回归
  • 【量化金融自学笔记】--开篇.基本术语及学习路径建议
  • 分布式多卡训练(DDP)踩坑
  • 物联网 水质监测设备 顶级功能 集成小范围内 高度精确GPS
  • 从0搭建Tomcat第二天:深入理解Servlet容器与反射机制
  • 启动你的RocketMQ之旅(三)-Producer启动和发送流程(上)
  • SpringCloud系列教程(十):token验证
  • Hadoop之01:HDFS分布式文件系统
  • 纳米材料简介
  • 【VitePress】vitepress 中 markdown 写作使用
  • Hadoop之02:MR-图解
  • 基于Flask实现的多语言Hello World
  • 企业如何将ERP和BPM项目结合提升核心竞争力
  • 【数据挖掘】Matplotlib
  • Kubespray部署企业级高可用K8S指南