Spring-SpringMVC-MyBatis详细整合

Spring-SpringMVC-MyBatis详细整合

1:环境搭建

1.1:整合思路

  1. 搭建整合环境
  2. 搭建Spring的配置环境
  3. 搭建Spring整合SpringMVC框架
  4. 使用Spring整合MyBatis框架

1.2:数据库环境

#创建一个管理员表manage
CREATE TABLE `manage` (
  `id` int NOT NULL AUTO_INCREMENT,
  `userName` varchar(255) DEFAULT NULL,
  `passWord` varchar(255) DEFAULT NULL,
  `realName` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
#插入一条数据
INSERT INTO `manage` VALUES (1,'admin','111','管理员');

1.3:创建相关类

框架结构

在这里插入图片描述

实体类Manage的创建

public class Manage implements Serializable {
    private Integer id;//主键
    private String userName;//登录名
    private String passWord;//密码
    private String realName;//姓名
    public Manage(){};
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
	public String getRealName() {
        return realName;
    }
    public void setRealName(String realName) {
        this.realName = realName;
    }
    @Override
    public String toString() {
        return "Manage{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                ", realName='" + realName + '\'' +
                '}';
    }
}

mapper层开发–其实现类可以在MyBatis整合的时候可以通过mapper代理对象进行实现
<1>ManageMappper接口的编写
<2>ManageMappper.xml的配置

public interface ManageService {
     //查询数据库返回一个Manage对象
    Manage findByEntity(Manage manage);
}

ManageMappper.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.yjr.mapper.ManageMapper">
  <select id="findByEntity" resultType="com.yjr.pojo.Manage" parameterType="com.yjr.pojo.Manage">
    select * from manage where userName=#{userName} and passWord=#{passWord}
   </select>
</mapper>

service层编写
ManageService接口和ManageServiceImpl实现类

public interface ManageService {
    Manage findByEntity(Manage manage);
}
import org.springframework.beans.factory.annotation.Autowired;
public class ManageServiceImpl implements ManageService {
       //暂时先不写这个
       //@Autowired
    // private ManageMapper manageMapper;
    public Manage findByEntity(Manage manage) {
        System.out.println("这里通过查询表Manage返回一个Manage对象");
        //模拟在阶段不实现
        return new Manage();
    }
}

controller层
ManageController:控制器

/**
 * 控制器层
 */
public class ManageController {
}

2:搭建Spring框架

2.1: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"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 1、 开启注解扫描,希望只处理 Service 和 mapper 层   -->
    <context:component-scan base-package="com.yjr">
        <!-- 配置哪些注解不扫描       -->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
</beans>

2.2:测试spring是否配置成功

public class ManageTest {
    @Test
    public void springTest(){
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
        ManageServiceImpl bean=applicationContext.getBean(ManageServiceImpl.class);
        System.out.println(bean);
        bean.findByEntity(new Manage());
    }
}

在这里插入图片描述

3:搭建SpringMVC

3.1:springmvc.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: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
   https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 1、开启注解扫描,只扫描 Controller 注解下的类   -->
    <context:component-scan base-package="com.yjr">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!-- 2、配置视图解析器    -->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!-- 3、开启SpringMVC 注解的支持   -->
    <mvc:annotation-driven/>
</beans>

3.2: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">

  <!-- SpringMVC 前端控制器 DispatcherServlet   -->
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 加载 spring-mvc 配置文件 -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <!-- 启动服务器时,创建该 Servlet       -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--  解决中文乱码的过滤器   -->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

3.3编写Controller层

/**
 * 控制器层
 */
@Controller
public class ManageController {

    @RequestMapping("/login")
    public String login(){
       //转向登录页面
        return "mLogin";
    }
}

/WEB-INF/jsp/mLogin.jsp(简单登录页面)

<%@page language="java" contentType="text/html; character=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>管理员登录</title>
</head>
<body>
<h1>登录界面</h1>
            <form action="${ctx}/toLogin" method="post">
                <input type="text" id="userName"  name="userName"  placeholder="登录账号" ><br/>
                 <input type="password" id="passWord"  name="passWord"  placeholder="登录密码" data-validate="required:请填写密码" /><br/>
                <input type="submit" value="登录" />
            </form>
</body>
</html>

4:Spring整合SpringMVC

启动 Tomcat 服务器的时候,就加载 spring 的配置文件,目的是将 spring 注解下的类所产生的对象注入到 IOC容器中。

4.1:在web,xml中添加Spring监听

这样就实现了controller层对service层的调用

    <!-- 配置Spring 的监听器 默认只加载WEB-INF 目录下的 applicationContext.xml 文件  -->
    <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>

4.2:ManageController

/**
 * 控制器层
 */
@Controller
public class ManageController {
    @Autowired
    private ManageService manageService;

    @RequestMapping("/login")
    public String login(){
       //转向登录页面
        return "mLogin";
    }
}

4.3:测试

在这里插入图片描述

5:搭建MyBatis

5.1:ManageMapper.xml

这里通过数据绑定传入参数注入Manage对象

<?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.yjr.mapper.ManageMapper">
<select id="findByEntity" resultType="com.yjr.pojo.Manage" parameterType="com.yjr.pojo.Manage">
    select * from manage where userName=#{userName} and passWord=#{passWord}
</select>
</mapper>

5.2:MyBatis的核心配置文件

<?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>
    <!-- 配置环境 -->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/shop?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 引入映射文件 -->
    <mappers>
        <mapper class="com.yjr.mapper.ManageMapper"/>
    </mappers>
</configuration>

5.3检测是否搭建成功

测试方法

 @Test
    public void myBatisTest() throws IOException {
        Manage manage=new Manage();
        manage.setUserName("y");
        manage.setPassWord("1");
      // 加载配置文件
      InputStream io = Resources.getResourceAsStream("mybatis-config.xml");
      // 创建 SqlSessionFactory ,解析配置资源
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(io);
      // 创建 SqlSession 对象
      SqlSession session = sqlSessionFactory.openSession();
      // 获得代理对象
      ManageMapper manageMapper = session.getMapper(ManageMapper.class);
      // 遍历集合
      Manage manage1 = manageMapper.findByEntity(manage);
      System.out.println(manage1);
      // 关闭资源
      session.close();
      io.close();

  }

表中数据

在这里插入图片描述

测试结果

在这里插入图片描述

6:Spring 整合 MyBatils

6.1:applicationContext.xml(加入mybatis框架)

<?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:aop="http://www.springframework.org/schema/aop"
       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/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 1、 开启注解扫描,希望只处理 Service 和 Dao 层   -->
    <context:component-scan base-package="com.yjr">
        <!-- 配置哪些注解不扫描       -->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!-- Spring 整合 MyBatis 框架   -->
    <!-- 1、配置连接池-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/shop?useSSL=false&amp;serverTimezone=UTC"/>
        <property name="user" value="root"/>
        <property name="password" value="123456"/>
    </bean>

    <!-- 配置SqlSessionFactory 工厂
        会创建其 SqlSession ,进而进一步创建 代理对象

     -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 配置 ManageMapper 接口所在包 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" id="mapper">
        <property name="basePackage" value="com.yjr.mapper"/>
    </bean>

</beans>

6.2controller层注入Service


/**
 * 控制器层
 */
@Controller
public class ManageController {
    @Autowired
    private ManageService manageService;

    @RequestMapping("/login")
    public String login(){
       //转向登录页面
        return "mLogin";
    }
    @RequestMapping("/toLogin")
    public String toLogin(Manage manage, Model model){//这个参数是通过前端数据绑定传过来的数据
       Manage manage1= manageService.findByEntity(manage);
        System.out.println(manage1);
        if (manage1!=null){
            model.addAttribute("msg","登录成功!");
            return "success";//转向一个登录成功页面
        }
        else {
            return "mLogin";//密码不合适的时候继续到登录页面
        }
      
    }
}

6.3:整合测试(和数据库中的数据对比)

登录页面–成功后调到成功页面

在这里插入图片描述
在这里插入图片描述

END

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值