Java Web 之 spring整合mybatis

2 篇文章 0 订阅
2 篇文章 0 订阅
本文详细介绍了SpringMVC的运行流程,包括DispatcherServlet、HandlerMapping、HandlerAdapter等组件的作用,以及如何在Spring中整合MyBatis,涉及配置文件、依赖管理和数据库操作。
摘要由CSDN通过智能技术生成

一、Spring mvc的运行流程

         1、客户端通过浏览器发送 HTTP 请求到服务器,请求特定的 URL,这个 URL 对应着 Spring MVC 中的 Controller。

        2、所有的请求都会先经过 DispatcherServlet(中央处理器),它是 Spring MVC 的核心控制器,负责统一处理所有的请求。DispatcherServlet 根据请求的 URL 找到对应的 HandlerMapping。

        3、HandlerMapping (处理器映射器)将请求的 URL 映射到具体的 Controller 上,确定了处理请求的 Controller 和方法。

        4、HandlerAdapter处理适配器)是 Spring MVC 框架中的一个关键组件,用于连接 DispatcherServlet 和实际的处理器(Handler),也就是 Controller 中的方法。它的作用是将不同类型的处理器(Handler)适配到 DispatcherServlet 上,使得它们能够处理来自客户端的请求。

        5、Controller 是业务逻辑的处理者,它接收到请求后,调用相应的业务逻辑处理方法进行处理。在处理完请求后,Controller 会返回一个 ModelAndView 对象,或者通过 ResponseBody 直接返回数据。

        6、ModelAndView 对象包含了视图的名称和模型数据。Controller 处理完请求后,会根据业务逻辑生成模型数据,并将视图的名称和模型数据封装在 ModelAndView 中。

        7、ViewResolver(视图解析器) 负责将逻辑视图名称解析为真正的视图对象。它会根据视图的名称,找到对应的视图模板,并返回给 DispatcherServlet。

        8、DispatcherServlet 收到视图对象后,调用视图对象的渲染方法进行视图的渲染。视图渲染的结果会生成一个 HTML 页面,或者其他类型的响应数据,如 JSON 或 XML。

        9、DispatcherServlet 将渲染好的视图或数据返回给客户端,完成整个请求-响应周期。


二、Spring整合mybatis

 1、引入mybatis、spring整合mybatis、mysql、jdbc、德鲁伊的依赖--在pom.xml

<!-- 引入mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.8</version>
    </dependency>

    <dependency>
      <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <version>8.0.32</version>
    </dependency>

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

    <!-- mybatis整合spring的依赖 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.2.2</version>
    </dependency>

    <!-- 德鲁伊连接池依赖 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.14</version>
    </dependency>

2、 写配置文件,将sqlsession和mapper交给spring管理,配置数据源--在spring-mybatis.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:utils="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">

    <!-- 配置数据库连接信息 -->
    <utils:properties id="db" location="classpath:db.properties"/>

    <!-- 配置数据源:使用德鲁伊 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="#{db.dirver}"/>
        <property name="url" value="#{db.url}"/>
        <property name="username" value="#{db.user}"/>
        <property name="password" value="#{db.password}"/>
    </bean>

    <!-- 配置sqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 配置数据源 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- mybatis配置文件位置 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!-- mapper对应的映射文件位置 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

    <!-- mapper接口配置:让spring接管mapper的实现类 -->
    <bean id="mapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.cykj.mapper"/>
    </bean>
</beans>

 3、在程序启动的时候读取该配置文件---在web.xml

<!--读取Mybatis整合spring的配置文件-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-mybatis.xml</param-value>
  </context-param>

4、写mapper接口,mapper映射文件 

--mapper接口

public interface UserMapper {
    int delete(@Param("ids") List<Integer> id);
}

--mapper映射文件 mapper.xml

<?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.cykj.mapper.UserMapper">

    <delete id="delete">
        delete  from person where personId in
               <foreach collection="ids" item="id" open="(" separator="," close=")">
                   #{id}
               </foreach>
    </delete>

</mapper>

5、在service里写Mapper,调用mapper 

@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;

    @Override
    public ResponseDTO delete(List<Integer> id) {
        int i = userMapper.delete(id);
        if (i > 0){
            return ResponseDTO.success("删除成功");
        }
        return ResponseDTO.falid("删除失败");

    }
}

6、controller调用service

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/delete")
    @ResponseBody
    public ResponseDTO delete(@RequestBody UserVo userVo){
        userService.delete(userVo.getIds());
        ResponseDTO J = ResponseDTO.success("删除成功");

        return J;
    }
}

 @RestController  是@Controllerhe和ResponseBody   --------就是请求动态资源

(注意:若执行后页面返回500有两种情况

  1. 依赖版本冲突,应修改依赖版本
  2. 配置文件的一对一对应没有对应上)

 

 

 

  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值