SSM整合

182 阅读6分钟
  1. 创建Maven项目
  2. 导入pom.xml
 <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

        <!-- Spring依赖 -->
        <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>

        <!--spring-context-->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>

        <!--、spring-core-->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>

        <!--spring-bean-->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>


        <!-- MyBatis核心依赖包 -->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!-- mysql数据库驱动 -->
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.48</version>
            <!-- <version>8.0.17</version> -->
        </dependency>

        <!-- Spring——Mybatis连接依赖 -->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>

        <!-- 实现数据库连接池 -->
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.1.1</version>
        </dependency>

        <!-- 对象池库 -->
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.4.2</version>
        </dependency>


        <!-- SpringMvc -->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.2.13.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>3.2.13.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>


        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- jspn格式-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.68</version>
        </dependency>

    </dependencies>

    <!-- 项目内写mybatis映射文件 -->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>
  1. 添加web依赖
    3.1 右键项目 -> 单击Add Framework Support...

    3.2 单击Java EE -> 选择JavaEE7

    3.3 选中Web Application -> 选择 3.1 -> ok

    3.4 把web文件夹移动到src/main目录下

    3.5 单击右上角的项目结构选项(Project Structure...)、修改项目结构;或者使用Sthif+Ctrl+Alt+S进入
    3.6 选择 Facets -> 选中自己创建的项目 -> 双击路径进行修改
    3.7 选择修改后web文件夹的位置,点击确认完成修改
    3.8 测试(推荐测试,有自信的可以跳过)
    3.9 添加服务器tomcat

    3.10 点击左上角“+” -> 找到Tomcat Server -> 选择local

    3.11 配置启动项

    3.12 进入Deployment选项卡,把项目打包

    3.13 修改访问路径,方便访问,点击完成;
    3.14 进入web/index.html 随便写几句话 -> 启动服务器

    3.15 网页显示、前面所有步骤,配置成功
  • 整合Spring+Mybatis
  1. Mybatis
    4.1 在Resources目录下创建Mybatis的文件mybatis-config.xml
    4.2 配置文件只配置别名,其他setting用到时在开启
<?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">
    <typeAliases>
        <package name="cn.kgc.entity"/>
    </typeAliases>
    <!--  开启驼峰命名映射(mysql字段为user_id,javaBean属性为userId 的情况可以自动映射封装) -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
    
    <!-- 自动使用方法定义时的参数名作为xml使用是的key(不需要使用@param("abc"),即可直接在mapper。xml使用#{abc})  
    <setting name="useActualParamName" value="true" />-->

    <!--   延迟加载:使用场景,当前对象有其他的对象,但是并不是每一次都会使用到这个联合对象, 只有当需要用到联合对象的时候才进行加载,类似懒汉式
     <setting name="lazyLoadingEnabled" value="true" />-->

    <!-- 联合对象中如果用到其中一个属性,默认会把所有的属性全部加载出来
    <setting name="aggressiveLazyLoading" value="false" />-->

    <!-- 打印日志,报错表示缺少log4j包
    <setting name="logImpl" value="LOG4J"/>-->
</configuration>
  • Spring
  1. Spring
    5.1 在resources中创建Spring配置文件,推荐命名application.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 注解扫描 -->
    <context:component-scan base-package="cn.kgc.service"></context:component-scan>
    <context:property-placeholder location="classpath:database.properties"></context:property-placeholder>
    
    <!-- 数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.kgc.dao"></property>
    </bean>
  1. 测试

6.1 创建User

import java.util.Date;
public class User {
    private Integer userId;
    private String userName;
    private String userPassword;
    private Date userBirthday;
    private Date userSigninTime;
    private Integer userLevel;
    private Integer userState;

    public User() {
    }


    /**
     * Mybatis+Spring 测试用,登陆
     * @param userName
     * @param userPassword
     */
    public User(String userName, String userPassword) {
        this.userName = userName;
        this.userPassword = userPassword;
    }

    public User(Integer userId, String userName, String userPassword, Date userBirthday, Date userSigninTime, Integer userLevel, Integer userState) {
        this.userId = userId;
        this.userName = userName;
        this.userPassword = userPassword;
        this.userBirthday = userBirthday;
        this.userSigninTime = userSigninTime;
        this.userLevel = userLevel;
        this.userState = userState;
    }

    public Integer getUserId() {
        return userId;
    }
    
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    
    public String getUserName() {
        return userName;
    }
    
    public void setUserName(String userName) {
        this.userName = userName;
    }
    
    public String getUserPassword() {
        return userPassword;
    }
    
    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }
   
    public Date getUserBirthday() {
        return userBirthday;
    }
   
    public void setUserBirthday(Date userBirthday) {
        this.userBirthday = userBirthday;
    }
   
    public Date getUserSigninTime() {
        return userSigninTime;
    }

    public void setUserSigninTime(Date userSigninTime) {
        this.userSigninTime = userSigninTime;
    }

    public Integer getUserLevel() {
        return userLevel;
    }

    public void setUserLevel(Integer userLevel) {
        this.userLevel = userLevel;
    }

    public Integer getUserState() {
        return userState;
    }

    public void setUserState(Integer userState) {
        this.userState = userState;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", userPasswprd='" + userPassword + '\'' +
                ", userBirthday=" + userBirthday +
                ", userSigninTime=" + userSigninTime +
                ", userLevel=" + userLevel +
                ", userState=" + userState +
                '}';
    }
}

6.2 UserMapper(Interface)

import cn.kgc.entity.User;

public interface UserMapper {
    //注册
    public  int signIn(User user);

    //登陆
    public User login(User user);
}

6.3 UserMapper.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="cn.kgc.dao.UserMapper">

    <select id="login" resultType="User">
        select user_name,user_password from user where user_name=#{userName} and  user_password = #{userPassword}
    </select>
</mapper>

6.4 UserService(Interface)

import cn.kgc.entity.User;

public interface UserService {
    //注册
    public  int signIn(User user);

    //登陆
    public User login(User user);
}

6.5 UserServiceMapper

import cn.kgc.dao.UserMapper;
import cn.kgc.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
//声明service
@Service("UserService")
public class UserServiceImpl implements UserService {
    //@Autowired 自动装配
    @Autowired
    UserMapper userMapper;


    public int signIn(User user) {
        return 0;
    }

    public User login(User user) {
        return userMapper.login(user);
    }
}

6.6 Test

import cn.kgc.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import static org.junit.Assert.*;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class UserServiceImplTest {

    @Autowired
    private UserService userService;

    @Test
    public void login() {
        User user = userService.login(new User("root","root"));
        if (user != null){
            System.out.println("3");
        }

    }

}

文件结构

  1. 把maven加入War包中,启动tomcat测试。
    7.1 选中项目进入项目结构(Ctrl+Shift+Alt+S) -> Artifacts -> 选中自己的项目 -> 右键最右边列表中自己项目的文件夹 -> Put into Output Root
    7.2 确定自己文件夹内已经把所有依赖的jar包导入到war包中
    7.3 修改服务器启动项
    7.4 删除旧项目、并重新添加、启动测试