SSM框架

目录导航

[TOC]

# 1.使用Maven构建web工程

```xml
    <!-- DB start -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
      <scope>runtime</scope>
    </dependency>
    <!-- DB end -->

    <!-- commons start -->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
    <!-- commons end -->

    <!-- MyBatis start -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.1.1</version>
    </dependency>
    <!-- MyBatis整合Spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>
    <!-- MyBatis end -->

    <!-- springframework mvc start -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</artifactId>
      <version>4.2.8.RELEASE</version>
      <exclusions>
        <exclusion>
          <artifactId>commons-logging</artifactId>
          <groupId>commons-logging</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.2.8.RELEASE</version>
    </dependency>
    <!-- springframework end -->

    <!-- log start -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.21</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <version>1.7.21</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- long end -->
```

# 2.创建数据库、表

```sql
CREATE TABLE `T_USER` (
  `UID` int(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '唯一标示ID',
  `NAME` varchar(20) NOT NULL DEFAULT '' COMMENT '账户名',
  `PWD` varchar(20) NOT NULL DEFAULT '' COMMENT '密码',
  `EMAIL` varchar(20) DEFAULT NULL COMMENT '电子邮箱',
  `STATUS` char(1) DEFAULT NULL COMMENT '状态',
  PRIMARY KEY (`UID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```

# 3.编写实体Bean _User.java_

```java
package com.mipo.dto;

public class User {

    private Integer uid;
    private String name;
    private String pwd;

    // getter/setter
}
```

# 4.编写持久层

## 4.1编写映射文件 _UserMapper.xml_

```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.mipo.dto.UserMapper">
  <!-- 查询单条纪录 -->
  <select id="selectUser" parameterType="Integer" resultType="com.mipo.dto.User">
    SELECT T.UID, T.NAME, T.PWD FROM T_USER T WHERE T.UID = #{uid}
  </select>

  <!-- 新增 -->
  <insert id="createUser" parameterType="com.mipo.dto.User" >
  INSERT INTO T_USER(UID, NAME, PWD) VALUES(#{uid}, #{name}, #{pwd})
  </insert>

  <!-- 修改 -->
  <update id="modifyUser" parameterType="com.mipo.dto.User">
  UPDATE T_USER T SET T.NAME = #{name} WHERE T.UID = #{uid}
  </update>

  <!-- 删除 -->
  <delete id="removeUser" parameterType="Integer">
  DELETE FROM T_USER WHERE UID = #{uid}
  </delete>

  <!-- 查询所有 -->
  <select id="queryAllUsers" resultType="com.mipo.dto.User">
  SELECT T.UID, T.NAME FROM T_USER T
  </select>
</mapper>
```

## 4.2编写核心配置文件 _mybatis-config.xml_

```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>
  <mappers>
    <!-- 配置映射文件 -->
    <mapper resource="com/mipo/dto/UserMapper.xml"/>
  </mappers>
</configuration>
```

## 4.3编写DAO

### 4.3.1DAO接口 _UserDao.java_
```java
import java.util.List;

import com.mipo.dto.User;

public interface UserDao {

    /**
     * 保存用户信息
     *
     * @param user
     */
    void saveUser(User user);

    /**
     * 修改用户信息
     *
     * @param user
     */
    void modifyUser(User user);

    /**
     * 删除用户信息
     *
     * @param user
     */
    void removeUser(User user);

    /**
     * 获取单个用户信息
     *
     * @param uid
     * @return
     */
    User getUser(Integer uid);

    /**
     * 查询所有用户信息
     *
     * @return
     */
    List<User> queryAllUser();

}
```

### 4.3.2DAO实现类 _UserDaoImpl.java_

```java
import java.util.List;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.mipo.dao.UserDao;
import com.mipo.dto.User;

@Repository("userDAO")
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {

    @Override
    public void saveUser(User user) {
        // TODO
    }

    @Override
    public void modifyUser(User user) {
        // TODO
    }

    @Override
    public void removeUser(User user) {
        // TODO
    }

    @Override
    public User getUser(Integer uid) {
        return this.getSqlSession().selectOne("com.mipo.dto.UserMapper.selectUser", uid);
    }

    @Override
    public List<User> queryAllUser() {
        // TODO
        return null;
    }

    @Autowired
    public void setSqlSessionFactory_(SqlSessionFactory sqlSessionFactory) {
        setSqlSessionFactory(sqlSessionFactory);
    }

}
```

# 5编写Service

## 5.1编写Service接口 _UserService.java_

```java
import java.util.List;

import com.mipo.dto.User;

public interface UserService {

    /**
     * 保存用户信息
     *
     * @param user
     */
    void saveUser(User user);

    /**
     * 修改用户信息
     *
     * @param user
     */
    void modifyUser(User user);

    /**
     * 删除用户信息
     *
     * @param uid
     */
    void removeUser(User user);

    /**
     * 获取单个用户信息
     *
     * @param uid
     * @return
     */
    User getUser(Integer uid);

    /**
     * 查询所有用户信息
     *
     * @return
     */
    List<User> queryAllUser();

}
```

## 5.2编写Service实现类 _UserServiceImpl.java_

```java
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.mipo.dao.UserDao;
import com.mipo.dto.User;
import com.mipo.service.UserService;

@Service("userService")
@Transactional(readOnly = true)
public class UserServiceImpl implements UserService {

    @Transactional(propagation = Propagation.REQUIRED)
    @Override
    public void saveUser(User user) {
        this.userDao.saveUser(user);
    }

    @Transactional(propagation = Propagation.REQUIRED)
    @Override
    public void modifyUser(User user) {
        this.userDao.modifyUser(user);
    }

    @Transactional(propagation = Propagation.REQUIRED)
    @Override
    public void removeUser(User user) {
        this.userDao.removeUser(user);
    }

    @Override
    public User getUser(Integer uid) {
        return this.userDao.getUser(uid);
    }

    @Override
    public List<User> queryAllUser() {
        return this.userDao.queryAllUser();
    }

    @Autowired
    private UserDao userDao;
}
```

# 6.数据库属性文件 _db.proerties_

```properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/scm?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root123
```

# 7.Spring上下文配置 _applicationContext.xml_

```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:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-4.2.xsd
  http://www.springframework.org/schema/tx
  http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">

  <!-- 读取属性资源文件 -->
  <context:property-placeholder location="classpath:db.properties" />

  <!-- 定义数据源 -->
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
  </bean>

  <!-- 配置SqlSessionFactory -->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:mybatis-config.xml" />
  </bean>

  <!-- 事务管理 -->
  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
  </bean>
  <tx:annotation-driven transaction-manager="transactionManager" />

  <!-- 组件扫描 -->
  <context:component-scan base-package="com.mipo">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
  </context:component-scan>
</beans>
```

# 8.编写测试类,测试Service


# 9.控制层

## 9.1配置 _web.xml_

```xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- 监听器 -->
  <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>

  <!-- 前端控制器 -->
  <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>
</web-app>
```

## 9.2配置 _dispatcher-servlet.xml_
```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-4.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.2.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

  <!-- 注册组件 -->
  <mvc:annotation-driven />
  <context:component-scan base-package="com.mipo.controller">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  </context:component-scan>

  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/view/" />
    <property name="suffix" value=".jsp" />
  </bean>
</beans>
```

## 9.3控制器 _UserController.java_

```java
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 com.mipo.service.UserService;

@Controller("userController")
public class UserController {

    @RequestMapping(path = { "/get" })
    public String execute(Integer uid, Model model) {
        model.addAttribute("user", this.userService.getUser(uid));
        return "success";
    }

    @Autowired
    private UserService userService;
}
```

# 10.测试
  <http://localhost:8080/demo/get?uid=1>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值