SSM框架實現用戶查詢、註冊、登錄——IDEA整合Spring、Spring MVC、Mybatis 框架

目錄

零、前言

一、說明

1、整合說明

2、最終目標

3、數據庫準備 

二、搭建整合環境 

1、創建 maven 工程

2、導入依賴座標

3、創建java和resources文件夾

4、創建類和接口文件

【1】創建存放 javabean 類文件:cn.star.domain.Users

【2】創建數據訪問層 UsersDao 接口:cn.star.dao.UsersDao

【3】創建業務層 UsersService 接口:cn.star.service.UsersService

【4】Service 實現類:cn.star.service.impl.UsersServiceImpl

【5】創建用戶控制層UsersController類:cn.star.controller.UsersController

5、創建配置文件

【1】spring.xml

【2】spring-mvc.xml

【3】mybatis.xml

【4】log4j.properties

【5】目錄結構

三、整合框架編寫

1、編寫spring框架

【1】配置註解掃描

【2】爲service實現類添加註解

【3】測試spring框架

2、編寫 SpringMVC 框架

【1】配置 web.xml

【2】配置 spring-mvc.xml

【3】測試SpringMVC

3、Spring 整合 SpringMVC 框架

【1】配置web.xml

【2】service注入controller

【3】測試運行

4、編寫 mybatis 框架

【1】配置mybatis.xml配置文件

【2】編寫UserDao類

【3】編寫測試類

5、Spring整合Mybatis框架

【1】配置spring.xml

【2】注入dao數據

【3】在service注入dao

【4】測試用戶查詢、註冊、登錄

四、源碼


零、前言

當下 Spring 全家桶如日中天,Spring 系列框架已然成爲 Java 後端開發的必備知識,接觸了 Spring、Spring MVC、Mybatis 框架後,是不是想嘗試將他們整合一下呢,雖然說 SSM 框架比不上 Spring boot 的簡便高效(Springboot整合請看:使用IDEA搭建SpringBoot框架整合Mybatis、MySQL、Thymeleaf實現用戶查詢、註冊、登錄),但 SSM 還是在很多公司中使用,況且整合 SSM 框架對於學習理解 Spring 還是有一定幫助的,博主萌新,大佬輕拍|=_=|話不多說,開拔!

一、說明

1、整合說明

  • 服務器開發分爲三層,表現層、業務層、持久層
  • 表現層使用SpringMVC實現,業務程使用Spring實現,持久層使用Mybatis實現
  • 使用Spring框架來整合 SpringMVC和Mybatis框架
  • 這裏使用xml配置文件+註解的方式進行搭建

2、最終目標

  • 最終實現通過前端頁面對數據庫進行查詢和插入,實現用戶的登錄註冊功能

3、數據庫準備 

CREATE DATABASE myssm;

USE myssm;

CREATE TABLE users(
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'id主鍵', 
    username VARCHAR(20) NOT NULL COMMENT '用戶名',
    PASSWORD  VARCHAR(20) NOT NULL COMMENT'用戶密碼'
);

INSERT INTO users (username,PASSWORD) VALUES("onestar","123");
INSERT INTO users (username,PASSWORD) VALUES("twostar","456");

 

二、搭建整合環境 

1、創建 maven 工程

【1】點擊:文件--->模塊,選擇 Maven,勾選 Create from achetype,選擇webapp,如下圖,點擊寫一個

【2】創建模塊名

【3】選擇maven配置(已選可不用管),點擊下一個

【4】給項目命名並保存到相應路徑下,點擊完成

創建好後目錄結構如下:

2、導入依賴座標

在pom.xml裏面導入座標,我的pom文件內容如下:

<?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>cn.star</groupId>
  <artifactId>myssm</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>myssm Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <spring.version>5.0.2.RELEASE</spring.version>
    <slf4j.version>1.6.6</slf4j.version>
    <log4j.version>1.2.12</log4j.version>
    <mysql.version>5.1.6</mysql.version>
    <mybatis.version>3.4.5</mybatis.version>
  </properties>

  <dependencies>
    <!-- spring -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.6.8</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</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>

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

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</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>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>

    <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>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <!-- log start -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <!-- log end -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>

    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>myssm</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

3、創建java和resources文件夾

在main目錄下面創建java和resources文件夾,並設置相應文件

4、創建類和接口文件

在java文件夾下創建類文件,所需的類文件有以下幾個:

  • 存放javabean的 domain 包下的用戶類:cn.star.domain.Users
  • 數據訪問層 dao 包下的用戶 dao 接口:cn.star.dao.UsersDao
  • 業務層 service 包下的 UsersService 接口:cn.star.service.UsersService
  • 業務層 service 包下的 service 實現類,繼承service接口:cn.star.service.impl.UsersServiceImpl
  • 控制層 controller 包下的用戶控制層UsersController類:cn.star.controller.UsersController

【1】創建存放 javabean 類文件:cn.star.domain.Users

package cn.star.domain;
import java.io.Serializable;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈用戶類〉
 *
 * @author OneStar
 * @create 2019/11/8
 * @since 1.0.0
 */
public class Users implements Serializable {
    private Integer id;
    private String username;
    private String PASSWORD;

    public Integer getId() {
        return id;
    }

    public void setId(Integer 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;
    }

    @Override
    public String toString() {
        return "Users{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", PASSWORD='" + PASSWORD + '\'' +
                '}';
    }
}

【2】創建數據訪問層 UsersDao 接口:cn.star.dao.UsersDao

這裏只需要編寫接口就可以了,框架會幫我們生成一個代理對象

package cn.star.dao;
import cn.star.domain.Users;
import java.util.List;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈數據訪問層 UsersDao 接口〉
 *
 * @author OneStar
 * @create 2019/11/8
 * @since 1.0.0
 */
public interface UsersDao {
    //查詢所有用戶
    public List<Users> findUsers();
    //用戶註冊
    public void insertUsers(Users users);
    //用戶登錄
    public Users login(Users users);
}

【3】創建業務層 UsersService 接口:cn.star.service.UsersService

 

package cn.star.service;
import cn.star.domain.Users;
import java.util.List;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈業務層接口〉
 *
 * @author OneStar
 * @create 2019/11/9
 * @since 1.0.0
 */
public interface UsersService {
    //查詢所有用戶
    public List<Users> findUsers();
    //用戶註冊
    public void insertUsers(Users users);
    //用戶登錄
    public boolean login(Users users);
}

【4】Service 實現類:cn.star.service.impl.UsersServiceImpl

繼承 UsersService 接口

package cn.star.service.impl;
import cn.star.domain.Users;
import cn.star.service.UsersService;
import java.util.List;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈Service 實現類〉
 *
 * @author OneStar
 * @create 2019/11/9
 * @since 1.0.0
 */
public class UsersServiceImpl implements UsersService {
    @Override
    public List<Users> findUsers() {
        System.out.println("業務層:查詢用戶");
        return null;
    }

    @Override
    public void insertUsers(Users users) {
        System.out.println("業務層:用戶註冊");
    }

    @Override
    public boolean login(Users users) {
        System.out.println("業務層:用戶登錄");
    }
}

【5】創建用戶控制層UsersController類:cn.star.controller.UsersController

5、創建配置文件

在resources文件夾下創建多個配置文件,主要有:

  • spring相關配置:spring.xml
  • springmvc相關配置:spring-mvc.xml
  • mybatis相關配置:mybatis.xml
  • 日誌相關配置:log4j.properties

【1】spring.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">
	
</beans>

【2】spring-mvc.xml

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

</beans>

【3】mybatis.xml

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


</configuration>

【4】log4j.properties

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=info, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

【5】目錄結構

至此,整個目錄結構如下

三、整合框架編寫

1、編寫spring框架

【1】配置註解掃描

在spring.xml中配置註解掃描,加上以下配置:

<!--開啓註解掃描,這裏service和dao是需要掃描的,controller是不需要掃描的-->
<context:component-scan base-package="cn.star">
    <!--配置要忽略的註解-->
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>

【2】爲service實現類添加註解

在UsersServiceImpl類中添加註解,把service交給IOC容器管理

@Service("usersService")
public class UsersServiceImpl implements UsersService {...}

【3】測試spring框架

這裏只做用戶查詢測試,創建測試類:cn.star.test.springtest

package cn.star.test;
import cn.star.service.UsersService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈測試類〉
 *
 * @author OneStar
 * @create 2019/11/11
 * @since 1.0.0
 */
public class springtest {
    @Test
    public void Test(){
        //加載配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring.xml");
        //獲取對象
        UsersService us = (UsersService) ac.getBean("usersService");
        //調用方法
        us.findUsers();
    }
}

運行,打印以下信息則搭建成功:

2、編寫 SpringMVC 框架

【1】配置 web.xml

  • 配置前端控制器
  • 加載spring-mvc.xml配置文件
  • 啓動服務器,創建Servlet
  • 配置過濾器解決中文亂碼
<!--配置前端控制器-->
<servlet>
  <servlet-name>dispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!--加載spring-mvc.xml配置文件-->
  <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>dispatcherServlet</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>

【2】配置 spring-mvc.xml

  • 開啓註解掃描,只掃描 controller
  • 配置視圖解析器
  • 過濾靜態資源
  • 開啓SpringMVC註解支持
<!--開啓註解掃描,只掃描Controller註解-->
<context:component-scan base-package="cn.star">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>

<!--配置的視圖解析器對象-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

<!--過濾靜態資源-->
<mvc:resources location="/css/" mapping="/css/**" />
<mvc:resources location="/images/" mapping="/images/**" />
<mvc:resources location="/js/" mapping="/js/**" />

<!--開啓SpringMVC註解的支持-->
<mvc:annotation-driven/>

【3】測試SpringMVC

  • 編寫用戶控制層
  • 編寫index.jsp頁面
  • 編寫跳轉頁面

1. 編寫UsersController用戶控制層

package cn.star.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈用戶控制層〉
 *
 * @author OneStar
 * @create 2019/11/9
 * @since 1.0.0
 */
@Controller
@RequestMapping("/users")
public class UsersController {
    @RequestMapping("/findUsers")
    public String findUsers(){
        System.out.println("表現層:查詢用戶");
        return "Users";
    }
}

2. 編寫index.jsp頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="users/findUsers">查詢用戶</a>
</body>
</html>

3. 編寫跳轉頁面

在 WEB-INF 目錄下新建 pages 目錄,pages 目錄下創建 Users.jsp 頁面,編寫 Users.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>查詢所有用戶</h3>
</body>
</html>

4. 部署Tomcat項目並測試

部署好後運行,點擊測試查詢鏈接,跳轉到查詢用戶界面,SpringMVC配置成功

3、Spring 整合 SpringMVC 框架

使用spring框架整合springmvc框架,目的就是能夠使用 controller 層方法調用 service 業務層方法,那要如何實現呢?分析如下:

  1. 瀏覽器發送請求,通過web.xml中配置的前端控制器加載springmvc.xml配置文件
  2. 在springmvc.xml配置文件中配置Spring的監聽器,默認只加載WEB-INF目錄下的spring.xml配置文件
  3. 將service注入controller,調用service對象的方法進行測試

【1】配置web.xml

配置Spring的監聽器和文件路徑

<!--配置Spring的監聽器,默認只加載WEB-INF目錄下的spring.xml配置文件-->
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--設置配置文件的路徑-->
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:spring.xml</param-value>
</context-param>

【2】service注入controller

修改 UsersController 類,將service注入controller,調用service對象的方法進行測試,修改後如下:

package cn.star.controller;
import cn.star.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈用戶控制層〉
 *
 * @author OneStar
 * @create 2019/11/9
 * @since 1.0.0
 */
@Controller
@RequestMapping("/users")
public class UsersController {
    @Autowired
    private UsersService usersService;
    @RequestMapping("/findUsers")
    public String findUsers(){
        System.out.println("表現層:查詢用戶");
        //調用service對象的方法進行測試
        usersService.findUsers();
        return "Users";
    }
}

【3】測試運行

點擊測試查詢鏈接後,在後臺打印一下信息,說明spring成功整合springmvc

4、編寫 mybatis 框架

【1】配置mybatis.xml配置文件

在configuration標籤內添加以下配置:

<!-- 配置環境 -->
<environments default="mysql">
    <environment id="mysql">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql:///myssm"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
        </dataSource>
    </environment>
</environments>
<!-- 引入映射配置文件 -->
<mappers>
    <package name="cn.star.dao"/>
</mappers>

【2】編寫UserDao類

public interface UsersDao {
    //查詢所有用戶
    @Select("select * from users")
    public List<Users> findUsers();

    //用戶註冊
    @Insert("INSERT INTO USERS (username,PASSWORD) VALUES(#{username},#{PASSWORD})")
    public void insertUsers(Users users);

    //用戶登錄
    @Select("select * from users where username=#{username} and PASSWORD=#{PASSWORD}")
    public Users login(Users users);
}

【3】編寫測試類

這裏測試用戶查詢和註冊,創建測試類:cn.star.test.mybatistest

package cn.star.test;
import cn.star.dao.UsersDao;
import cn.star.domain.Users;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.InputStream;
import java.util.List;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈mybatis測試類〉
 *
 * @author OneStar
 * @create 2019/11/11
 * @since 1.0.0
 */
public class mybatistest {
    /**
     * 測試查詢用戶
     * @throws Exception
     */
    @Test
    public void run1() throws Exception {
        // 加載配置文件
        InputStream in = Resources.getResourceAsStream("mybatis.xml");
        // 創建SqlSessionFactory對象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        // 創建SqlSession對象
        SqlSession session = factory.openSession();
        // 獲取到代理對象
        UsersDao dao = session.getMapper(UsersDao.class);
        // 查詢所有數據
        List<Users> list = dao.findUsers();
        for(Users users : list){
            System.out.println(users);
        }
        // 關閉資源
        session.close();
        in.close();
    }

    /**
     * 測試註冊
     * @throws Exception
     */
    @Test
    public void run2() throws Exception {
        Users users = new Users();
        users.setUsername("threestar");
        users.setPASSWORD("789");

        // 加載配置文件
        InputStream in = Resources.getResourceAsStream("mybatis.xml");
        // 創建SqlSessionFactory對象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        // 創建SqlSession對象
        SqlSession session = factory.openSession();
        // 獲取到代理對象
        UsersDao dao = session.getMapper(UsersDao.class);

        // 保存
        dao.insertUsers(users);

        // 提交事務
        session.commit();

        // 關閉資源
        session.close();
        in.close();
    }
}

測試查詢用戶和測試註冊用戶,能查詢出用戶數據和註冊成功,mybatis框架搭建成功

5、Spring整合Mybatis框架

Spring要想成功整合Mybatis框架,就需要service層成功調用dao對象,然後進行相關數據庫的增刪改查操作

  • 將dao代理對象存到IOC容器中
  • 通過service注入dao

【1】配置spring.xml

  1. 配置連接池
  2. 配置SqlSessionFactory工廠
  3. 配置UsersDao接口所在包
<!--Spring整合MyBatis框架-->
<!--配置連接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql:///myssm"/>
    <property name="user" value="root"/>
    <property name="password" value="123456"/>
</bean>

<!--配置SqlSessionFactory工廠-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
</bean>

<!--配置UsersDao接口所在包-->
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="cn.star.dao"/>
</bean>

配置好後,就沒 mybatis.xml 什麼事了,可以刪去

【2】注入dao數據

修改Usersdao類,添加註解

@Repository
public interface UsersDao {...}

【3】在service注入dao

修改UsersServiceImpl類,修改後如下:

package cn.star.service.impl;
import cn.star.dao.UsersDao;
import cn.star.domain.Users;
import cn.star.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈Service 實現類〉
 *
 * @author OneStar
 * @create 2019/11/9
 * @since 1.0.0
 */
@Service("usersService")
public class UsersServiceImpl implements UsersService {
    @Autowired
    private UsersDao usersDao;

    @Override
    public List<Users> findUsers() {
        System.out.println("業務層:查詢用戶");
        return usersDao.findUsers();
    }

    @Override
    public void insertUsers(Users users) {
        System.out.println("業務層:用戶註冊");
        usersDao.insertUsers(users);
    }

    @Override
    public boolean login(Users users) {
        System.out.println("業務層:用戶登錄");
        if(usersDao.login(users) == null){
            return false;
        }else{
            return true;
        }
    }
}

【4】測試用戶查詢、註冊、登錄

1、修改UsersController類,將數據顯示在頁面上,修改後如下:

package cn.star.controller;
import cn.star.domain.Users;
import cn.star.service.UsersService;
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;
/**
 * 〈一句話功能簡述〉<br> 
 * 〈用戶控制層〉
 *
 * @author OneStar
 * @create 2019/11/9
 * @since 1.0.0
 */
@Controller
@RequestMapping("/users")
public class UsersController {
    @Autowired
    private UsersService usersService;

    /**
     * 查詢用戶
     * @param model
     * @return
     */
    @RequestMapping("/findUsers")
    public String findUsers(Model model){
        System.out.println("表現層:查詢用戶");
        //調用service對象的方法進行測試
        List<Users> list = usersService.findUsers();
        model.addAttribute("list",list);
        return "Users";
    }

    /**
     * 用戶註冊
     * @param users
     * @return
     */
    @RequestMapping("/insert")
    public String insert(Users users) {
        System.out.println("註冊");
        // 調用注入的 usersService 調用 insertUsers 方法
        usersService.insertUsers(users);
        return "success";
    }

    /**
     * 用戶登錄
     * @param users
     * @return
     */
    @RequestMapping("/login")
    public String login(Users users) {
        System.out.println("登錄");
        // 調用注入的 usersService 調用 login 方法
        if(usersService.login(users)){
            return "successlogin";
        }else{
            return "falselogin";
        }
    }
}

2、修改 index.jsp 頁面,爲 index.jsp 頁面添加註冊表單和登錄表單

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="users/findUsers">測試查詢</a>
<hr>
<form method="post" action="/users/insert">
    用戶:<input type="text" name="username"><br>
    密碼:<input type="text" name="PASSWORD"><br>
    <input type="submit" value="註冊"><br>
</form>
<hr>
<form method="post" action="/users/login">
    用戶:<input type="text" name="username"><br>
    密碼:<input type="text" name="PASSWORD"><br>
    <input type="submit" value="登錄"><br>
</form>
<hr>
</body>
</html>

3、修改用戶查詢跳轉頁面Users.jsp,將查詢數據顯示在頁面上

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>查詢所有用戶</h3>
${list}
</body>
</html>

4、創建註冊成功提醒頁面:success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>註冊成功</h1>
</body>
</html>

5、創建登錄成功和登錄失敗提醒頁面:successlogin.jsp、falselogin.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>登錄成功</h1>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>登錄失敗</h1>
</body>
</html>

6、運行Tomcat服務器,點擊“測試查詢”可以查詢用戶,輸入用戶名和密碼可以進行登錄和註冊

四、源碼

至此,SSM框架實現用戶查詢、註冊、登錄——IDEA整合Spring、Spring MVC、Mybatis 框架搭建完成,這個框架目錄結構如下:

能看到這裏,實屬不易,不如點贊收藏+關注<(▰˘◡˘▰)

源碼地址:

鏈接:https://pan.baidu.com/s/1-nERI56kzOGmkd8uVjhhrg 
提取碼:mh4m 

啥?沒網盤?那就留下郵箱,小弟親自奉上٩(๑❛︶❛๑)۶

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章