SSM框架整合

本文介绍如何在Spring MVC框架中集成MyBatis ORM工具,包括配置数据源、设置MyBatis工厂Bean、定义Mapper扫描配置等步骤,并提供了一个具体的用户登录与密码修改功能的Controller和服务层代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先导入必备的包
这里写图片描述

在src目录下新建applicationContext.xml文件作为Spring配置文件
里面放有数据源的信息,mybatis工厂bean及mybatis文件
指定mybatis Mapper扫描的包
注意放上数据库的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    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-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!-- dbcp数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        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="10" />
        <property name="maxIdle" value="5" />
    </bean>

    <!-- mybatis的工厂 -->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!-- 核心配置文件的位置 -->
        <property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 指定基本包 -->
        <property name="basePackage" value="cn.edu.hbue.mapper"></property>
    </bean>

</beans>

接下来在srsc目录新建springmvc.xml文件作为springmvc的配置文件
主要用来指定扫描Controller和Service,拦截器也放在里面

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 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-4.0.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

    <!-- 扫描@Controller @Service -->
    <context:component-scan base-package="cn.edu.hbue"></context:component-scan>

    <!-- springmvc拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**" />
            <bean class="cn.edu.hbue.interceptor.Inteceptor1"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
    <!-- 注解驱动 -->
    <!-- 默认的处理器映射器和处理器适配器已经过期,需要配置新的,用如下语句可代替 -->
    <mvc:annotation-driven />

</beans>

新建SqlMapConfig.xml文件作为mybatis配置文件,主要放mybatis pojo的别名

<?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>
    <!-- 别名 -->
    <typeAliases>
        <!-- <typeAlias type="xyz.db361.mybatis.pojo.User" alias="User"/> -->
        <!-- User  user 都对 -->
        <package name="cn.edu.hbue.pojo"/>
    </typeAliases>
</configuration>

mybatis的 Mapper可以通过逆向工程生成
最终项目的目录结构如下
这里写图片描述

样例Controller层代码

package cn.edu.hbue.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

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 cn.edu.hbue.pojo.User;
import cn.edu.hbue.service.UserService;
import cn.edu.hbue.utils.MD5Utils;

@Controller
@RequestMapping(value = "/user")
public class UserController {

    @Autowired
    private UserService us;

    @RequestMapping(value = "/login.action")
    public String login(User u, Model model, HttpSession session) {
        u.setUser_pw(MD5Utils.md5(u.getUser_pw()));
        User existU = us.login(u);
        if (existU == null) {
            model.addAttribute("error", "用户名或密码错误");
            return "/login.jsp";
        } else {
            if (existU.getIs_first().equals("1")) {
                existU.setIs_first("0");
                us.changeFirst(existU);
                session.setAttribute("user", existU);
                return "redirect:/info.jsp";
            } else {
                session.setAttribute("user", existU);
                return "redirect:/index.jsp";
            }
        }
    }

    @RequestMapping(value = "/changePw.action")
    public String changePw(String user_pw, String old_pw, HttpSession session, Model model) {
        User u = (User) session.getAttribute("user");

        // 原密码正确
        if (u.getUser_pw().equals(MD5Utils.md5(old_pw))) {
            u.setUser_pw(MD5Utils.md5(user_pw));
            us.changePw(u);
            session.invalidate();
            // 0代表修改成功
            model.addAttribute("message", "0");
        } else {
            // 原密码错误
            // 1代表修改
            model.addAttribute("message", "1");
        }
        return "/changepwms.jsp";

    }

    @RequestMapping(value = "/logout.action")
    public String logout(HttpSession session) {
        session.invalidate();
        return "/login.jsp";
    }

}

样例Service层代码,面向接口编程,先写接口,再写实现类

package cn.edu.hbue.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.edu.hbue.mapper.UserMapper;
import cn.edu.hbue.pojo.User;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper um;

    public User login(User u) {
        return um.login(u);
    }

    @Override
    public void changeFirst(User u) {
        um.chageFirst(u);

    }

    @Override
    public void changePw(User u) {
        um.changePw(u);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值