Spring MVC与Mybatis深度整合实战

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Spring MVC和Mybatis是Java Web开发中两大重要框架,整合后可构建高效灵活的Web应用。本课程设计项目经过测试,旨在帮助学生掌握Spring MVC和Mybatis的整合实践,包括配置Spring、编写Mybatis Mapper、创建Service和Controller等。学生将通过实践任务,提升在数据库操作、请求处理和视图渲染方面的能力,为未来在企业级Web应用开发中打下坚实基础。 Spring MVC整合Mybatis

1. Spring MVC与Mybatis简介

Spring MVC是一个轻量级的Web框架,它遵循MVC设计模式,提供了一个简洁而强大的方式来处理HTTP请求和响应。它使用注解和配置来简化Web应用程序的开发,并提供许多功能,例如表单验证、数据绑定和异常处理。

MyBatis是一个持久层框架,它使用XML或注解来映射Java对象和数据库表之间的关系。它提供了对数据库操作的简单而强大的API,并支持各种数据库,例如MySQL、Oracle和SQL Server。

2.1 Spring MVC框架简介

2.1.1 Spring MVC的架构和工作原理

Spring MVC是一种基于MVC(模型-视图-控制器)设计模式的Web框架,它将请求处理过程划分为三个组件:

  • 控制器(Controller): 负责处理用户请求,接收请求参数并调用模型层处理业务逻辑。
  • 模型(Model): 负责处理业务逻辑,并返回结果数据给控制器。
  • 视图(View): 负责将模型数据渲染成最终的响应内容,如HTML、JSON等。

Spring MVC的工作原理如下:

  1. 用户发送请求到Web服务器。
  2. Web服务器将请求转发给Spring MVC的DispatcherServlet。
  3. DispatcherServlet根据请求的URL匹配到相应的控制器。
  4. 控制器处理请求,调用模型层处理业务逻辑。
  5. 模型层处理业务逻辑,并返回结果数据给控制器。
  6. 控制器将结果数据传递给视图。
  7. 视图将结果数据渲染成最终的响应内容,并返回给用户。

2.1.2 Spring MVC的注解和配置

Spring MVC提供了丰富的注解和配置选项,用于简化Web应用程序的开发。

注解:

  • @RequestMapping :用于映射请求URL到控制器方法。
  • @RequestParam :用于获取请求参数。
  • @PathVariable :用于获取请求路径中的变量。
  • @ModelAttribute :用于将请求参数绑定到模型对象。
  • @ResponseBody :用于将控制器方法的返回值直接作为响应内容。

配置:

  • web.xml :用于配置DispatcherServlet。
  • applicationContext.xml :用于配置Spring IOC容器和Spring MVC组件。
<!-- web.xml -->
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

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

<!-- applicationContext.xml -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

<context:component-scan base-package="com.example.controller" />

通过使用注解和配置,我们可以快速开发出功能强大的Web应用程序。

3. Spring MVC与Mybatis整合实践

本章节将深入实践Spring MVC与Mybatis的整合,通过实战的方式,详细讲解如何配置Spring MVC和Mybatis,编写Mapper、Service和Controller,从而完成一个完整的Web应用开发。

3.1 Spring配置实战

3.1.1 Spring MVC的配置文件

Spring MVC的配置文件主要用于配置Spring MVC的各种属性,如视图解析器、处理器映射器、异常处理等。常见的配置文件为 web.xml spring-mvc.xml

web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_4_0.xsd"
         version="4.0">

    <!-- 配置Spring MVC的监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 配置Spring MVC的Servlet -->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- 配置Spring MVC的Servlet映射 -->
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
spring-mvc.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

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

    <!-- 配置处理器映射器 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

    <!-- 配置异常处理 -->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="java.lang.Exception">error</prop>
            </props>
        </property>
        <property name="defaultErrorView" value="error" />
    </bean>

</beans>

3.1.2 Spring IOC容器的配置

Spring IOC容器的配置主要用于配置Spring IOC容器的各种属性,如bean的扫描、自动装配等。常见的配置文件为 applicationContext.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 扫描包,自动装配bean -->
    <context:component-scan base-package="com.example.demo" />

</beans>

3.2 Mybatis配置实战

3.2.1 Mybatis的配置文件

Mybatis的配置文件主要用于配置Mybatis的各种属性,如数据库连接、SQL映射等。常见的配置文件为 mybatis-config.xml

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

    <!-- 配置数据库连接 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/demo" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>

    <!-- 配置SQL映射 -->
    <mappers>
        <mapper resource="com/example/demo/mapper/UserMapper.xml" />
    </mappers>

</configuration>

3.2.2 Mybatis的映射文件

Mybatis的映射文件主要用于定义SQL语句和Java对象之间的映射关系。常见的映射文件为XML文件,后缀为 .xml

<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="com.example.demo.mapper.UserMapper">

    <!-- 查询用户 -->
    <select id="selectUserById" resultType="com.example.demo.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <!-- 新增用户 -->
    <insert id="insertUser" parameterType="com.example.demo.entity.User">
        INSERT INTO user (name, age) VALUES (#{name}, #{age})
    </insert>

</mapper>

3.3 Mapper编写实战

3.3.1 Mapper接口的定义

Mapper接口主要用于定义数据库操作的方法,其方法名与映射文件中的SQL语句ID对应。

public interface UserMapper {

    User selectUserById(int id);

    int insertUser(User user);

}

3.3.2 Mapper XML映射文件的编写

Mapper XML映射文件主要用于定义SQL语句和Java对象之间的映射关系,其内容与3.2.2节中的示例相同。

3.4 Service编写实战

3.4.1 Service接口的定义

Service接口主要用于定义业务逻辑的方法,其方法名与Controller中的方法名对应。

public interface UserService {

    User getUserById(int id);

    int addUser(User user);

}

3.4.2 Service实现类的编写

Service实现类主要用于实现业务逻辑,其方法体中调用Mapper接口的方法来操作数据库。

public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(int id) {
        return userMapper.selectUserById(id);
    }

    @Override
    public int addUser(User user) {
        return userMapper.insertUser(user);
    }

}

3.5 Controller编写实战

3.5.1 Controller的定义和注解

Controller主要用于处理HTTP请求,其方法名与URL路径对应。

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/user/get")
    public String getUserById(int id, Model model) {
        User user = userService.getUserById(id);
        model.addAttribute("user", user);
        return "user";
    }

    @RequestMapping("/user/add")
    public String addUser(User user) {
        userService.addUser(user);
        return "redirect:/user/list";
    }

}

3.5.2 Controller方法的编写

Controller方法主要用于处理HTTP请求,其方法体中调用Service的方法来处理业务逻辑。

4. Spring MVC与Mybatis整合进阶

4.1 Spring MVC与Mybatis的性能优化

4.1.1 Spring MVC的性能优化

1. 启用Spring MVC的缓存

Spring MVC提供了缓存功能,可以通过在控制器方法上添加 @Cacheable 注解来启用缓存。缓存可以减少对数据库的访问次数,从而提高性能。

2. 使用视图解析器缓存

Spring MVC使用视图解析器将模型数据渲染成视图。可以通过在视图解析器中启用缓存来提高渲染速度。

3. 优化静态资源的处理

静态资源(如CSS、JS、图片)的处理会消耗大量的性能。可以通过使用CDN或反向代理来优化静态资源的处理。

4.1.2 Mybatis的性能优化

1. 使用Mybatis一级缓存

Mybatis提供了二级缓存,可以减少对数据库的访问次数。一级缓存是Mybatis内部的缓存,可以将查询结果缓存在Session中。

2. 使用Mybatis二级缓存

Mybatis二级缓存是跨Session的缓存,可以将查询结果缓存在整个应用程序中。二级缓存可以进一步减少对数据库的访问次数,但需要谨慎使用,因为缓存数据可能会过时。

3. 优化SQL查询

优化SQL查询是提高Mybatis性能的关键。可以通过使用索引、优化连接、使用批量操作等方式来优化SQL查询。

4.2 Spring MVC与Mybatis的扩展

4.2.1 Spring MVC的扩展点

Spring MVC提供了丰富的扩展点,可以通过实现特定的接口或使用Spring的AOP功能来扩展Spring MVC的功能。

1. 拦截器

拦截器可以在请求处理之前或之后执行,可以用于日志记录、权限控制、参数验证等功能。

2. 处理器

处理器负责处理请求并返回响应。可以通过实现 HandlerMapping HandlerAdapter 接口来扩展Spring MVC的处理器功能。

4.2.2 Mybatis的扩展点

Mybatis也提供了丰富的扩展点,可以通过实现特定的接口或使用Mybatis的插件机制来扩展Mybatis的功能。

1. 插件

插件是Mybatis中强大的扩展机制,可以拦截Mybatis的执行过程并进行自定义操作。插件可以用于日志记录、性能监控、数据加密等功能。

2. 类型处理器

类型处理器负责将Java对象和数据库字段之间的类型进行转换。可以通过实现 TypeHandler 接口来扩展Mybatis的类型处理器功能。

5. Spring MVC与Mybatis整合案例

5.1 用户管理系统案例

5.1.1 系统需求分析

功能需求:

  • 用户注册
  • 用户登录
  • 用户信息修改
  • 用户查询
  • 用户删除

非功能需求:

  • 界面友好
  • 性能稳定
  • 安全可靠

5.1.2 系统设计与实现

技术选型:

  • 前端:HTML、CSS、JavaScript
  • 后端:Spring MVC、Mybatis
  • 数据库:MySQL

系统架构:

实现步骤:

  1. 创建Spring MVC项目
  2. 配置Spring MVC
  3. 配置Mybatis
  4. 编写Mapper接口
  5. 编写Mapper XML映射文件
  6. 编写Service接口
  7. 编写Service实现类
  8. 编写Controller
  9. 测试系统

代码示例:

Controller:

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public String listUsers(Model model) {
        List<User> users = userService.findAll();
        model.addAttribute("users", users);
        return "users";
    }

    @GetMapping("/users/{id}")
    public String getUser(@PathVariable("id") Long id, Model model) {
        User user = userService.findById(id);
        model.addAttribute("user", user);
        return "user";
    }

    @PostMapping("/users")
    public String createUser(@ModelAttribute User user) {
        userService.save(user);
        return "redirect:/users";
    }

    @PutMapping("/users/{id}")
    public String updateUser(@PathVariable("id") Long id, @ModelAttribute User user) {
        userService.update(user);
        return "redirect:/users";
    }

    @DeleteMapping("/users/{id}")
    public String deleteUser(@PathVariable("id") Long id) {
        userService.deleteById(id);
        return "redirect:/users";
    }
}

Service:

public interface UserService {

    List<User> findAll();

    User findById(Long id);

    void save(User user);

    void update(User user);

    void deleteById(Long id);
}

Mapper:

<mapper namespace="com.example.demo.mapper.UserMapper">

    <select id="findAll" resultType="com.example.demo.entity.User">
        select * from user
    </select>

    <select id="findById" parameterType="java.lang.Long" resultType="com.example.demo.entity.User">
        select * from user where id = #{id}
    </select>

    <insert id="save" parameterType="com.example.demo.entity.User">
        insert into user (username, password, email) values (#{username}, #{password}, #{email})
    </insert>

    <update id="update" parameterType="com.example.demo.entity.User">
        update user set username = #{username}, password = #{password}, email = #{email} where id = #{id}
    </update>

    <delete id="deleteById" parameterType="java.lang.Long">
        delete from user where id = #{id}
    </delete>
</mapper>

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Spring MVC和Mybatis是Java Web开发中两大重要框架,整合后可构建高效灵活的Web应用。本课程设计项目经过测试,旨在帮助学生掌握Spring MVC和Mybatis的整合实践,包括配置Spring、编写Mybatis Mapper、创建Service和Controller等。学生将通过实践任务,提升在数据库操作、请求处理和视图渲染方面的能力,为未来在企业级Web应用开发中打下坚实基础。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值