SSM整合

开发环境搭建

 <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>ssm-demo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <!-- springMVC -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.7.RELEASE</version>
    </dependency>

    <!-- spring jdbc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.7.RELEASE</version>
    </dependency>

    <!-- spring aop  -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>4.3.7.RELEASE</version>
    </dependency>

    <!-- mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.2</version>
    </dependency>

    <!-- mybatis与spring整合 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>
    <!-- 数据库连接池 和驱动-->
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.40</version>
    </dependency>

    <!-- jstl junit servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <!-- spring单元测试 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>4.3.7.RELEASE</version>
      <scope>test</scope>
    </dependency>

    <!-- 引入Mybatis分页插件 -->
    <!-- 引入5.0版本在测试的时候会报错 4.2版本也会报错
    4.2版本总是出现String无法转换为某个对象的错误
     -->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.1.5</version>
    </dependency>

  </dependencies>
  <build>
    <finalName>ssm-demo</finalName>

    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
  </build>
</project>

数据库

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `age` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

Mybatis-config.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>

    <!-- 别名设置 -->
    <typeAliases>
        <package name="com.ssm.model" />
    </typeAliases>
    
    <!-- mybatis分页插件 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper"></plugin>
    </plugins>

</configuration>

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

    <!--注解扫描包-->
    <context:component-scan base-package="com.ssm" />

    <!--加载jdbc-->
    <context:property-placeholder location="classpath:config.properties" />
<!--配置数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="jdbcUrl" value="${c3p0.jdbcUrl}"></property>
        <property name="driverClass" value="${c3p0.driverClass}"></property>
        <property name="user" value="${c3p0.user}"></property>
        <property name="password" value="${c3p0.password}"></property>
    </bean>

    <!--配置和mybatis整合-->
<!--创建sqlsessionfactory工厂-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="configLocation" value="classpath:sqlConfig.xml"></property>
    <property name="mapperLocations">
        <list>
            <value>classpath*:mapper/*.xml</value>
        </list>
    </property>
</bean>
    <!-- 配置mybatis的代理接口开发 * 接口类名和映射文件必须同名 * 接口类和映射文件必须在同一个目
       录下 * 接口的映射文件的namespace名称必须是接口的全限定名
        * 接口的方法名必须和映射的statement的id一致 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 扫描所有dao接口的实现,加入到ioc容器中  -->
        <property name="basePackage" value="com.ssm.mapper"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>
    <!--事务-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--配置事务增强事务如何切入-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*"/>
            <tx:method name="get*" read-only="true"></tx:method>
        </tx:attributes>
    </tx:advice>
    <!--配置拦截service-->
    <aop:config>
        <aop:pointcut id="txPoint" expression="execution(* com.ssm.service..*(..))"></aop:pointcut>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"></aop:advisor>
    </aop:config>
</beans>

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

    <context:property-placeholder/>
    <!--配置自动扫描包    -->
    <context:component-scan base-package="com.ssm"/>
    <!--1: mvc:annotation-driven默认创建了 RequestMappingHandlerMapping和  RequestMappingHandlerAdapter对象
            提供对JSon数据格式的支持-->
    <mvc:annotation-driven/>
    <!-- 2.配置静态资源访问 -->
    <mvc:default-servlet-handler />

    <!-- 配置sprigmvc视图解析器:解析逻辑试图
             后台返回逻辑试图:index
            视图解析器解析出真正物理视图:前缀+逻辑试图+后缀====/WEB-INF/page/index.jsp-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="suffix" value=".jsp"></property>
        <property name="prefix" value="/WEB-INF/page/"></property>
    </bean>
</beans>

创建log4j.properties

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.encoding=UTF-8
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.appender.rollingfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rollingfile.encoding=UTF-8
log4j.appender.rollingfile.DatePattern='.'yyyyMMdd
log4j.appender.rollingfile.File=logs/manager.log
log4j.appender.rollingfile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingfile.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.rootLogger=INFO,console
log4j.logger.com.redare=DEBUG,console
log4j.additivity.com.redare=false

db.properties

##数据库连接配置
c3p0.jdbcUrl=jdbc\:mysql\://127.0.0.1/test?useUnicode\=true&characterEncoding\=utf-8
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.user=root
c3p0.password=root
c3p0.acquireIncrement=3
c3p0.initialPoolSize=5
c3p0.minPoolSize=5
c3p0.maxPoolSize=20
c3p0.maxIdleTime=120

创建实体类


public class Users {

    private int id;
    private String name;
    private int age;
    }

Dao层

package com.ssm.mapper;

import com.ssm.model.Users;
import org.springframework.stereotype.Repository;

import java.util.List;

public interface UsersMapper {
    public void saveUser(Users users);
    public boolean updateUser(Users users);
    public boolean deleteUser(int id);
    public Users findUsers(int id);
    public List findAllUsers();
}

service层

package com.ssm.service.impl;

import com.ssm.mapper.UsersMapper;
import com.ssm.model.Users;
import com.ssm.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UsersServiceImpl implements UsersService {


    @Autowired
    private UsersMapper mapper;

    public void saveUsers(Users users) {
        mapper.saveUser(users);
    }

    public boolean deleteUsers(int id) {
        return mapper.deleteUser(id);
    }

    public boolean updateUsers(Users users) {
        return mapper.updateUser(users);
    }

    public Users seleteUsers(int id) {
        return mapper.findUsers(id);
    }

    public List selectAll() {
        return mapper.findAllUsers();
    }
}

UserMapper

<?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">
<!--
    namespace:必须与对应的接口全类名一致  UserMapper.java
    id :必须与对应接口的某个对应的方法名一致即必须要和UserMapper.java接口中的方法同名。
 -->
<mapper namespace="com.ssm.mapper.UsersMapper">

    <!--增加-->
    <insert id="saveUser" parameterType="Users">
      INSERT INTO users(name,age) VALUES (#{name},#{age})
    </insert>
    <!--删除-->
    <delete id="deleteUser" parameterType="int">
        DELETE FROM users WHERE id=#{id}
    </delete>
    <!--修改-->
    <update id="updateUser" parameterType="Users">
        UPDATE users SET name=#{name},age=#{age} WHERE id=#{id}
    </update>
    <!--根据ID查询-->
    <select id="findUsers" parameterType="int" resultType="Users">
      SELECT * from users WHERE id=#{id}
    </select>
    <!--查询所有-->
<select id="findAllUsers" resultType="Users">
    SELECT * FROM users
</select>

</mapper>

controller

package com.ssm.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ssm.model.Users;
import com.ssm.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 org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
@RequestMapping("/users/")
public class UsersController {

    @Autowired
    private UsersService usersService;

    @RequestMapping("info")
    public String toAddUsers(){
        return "addUsers";
    }

    @RequestMapping("addUsers")
    public String addUsers(Model model, Users users){
        if (users!=null){
            usersService.saveUsers(users);
        }
        return "redirect:/users/userInfo";
    }

    @RequestMapping("updateUsers")
    public String updateUsers(Model model,Users users){
        if (usersService.updateUsers(users)){
            users=usersService.seleteUsers(users.getId());
            model.addAttribute("users",users);
            return "redirect:/users/userInfo";
        }
        return "error";
    }

    @RequestMapping("deleteUsers")
    public String deleteUsers(Model model,int id){
        model.addAttribute("users",usersService.deleteUsers(id));
        return "redirect:/users/userInfo";
    }

    @RequestMapping("getUser")
    public String getUser(Model model,int id){
        model.addAttribute("users",usersService.seleteUsers(id));
        return "editUsers";
    }

    @RequestMapping("getAll")
    public String getAllUsers(Model model){
        List users=usersService.selectAll();
        model.addAttribute("users",users);
        return "addUsers";
    }

    @RequestMapping("userInfo")
    public String getUsers(@RequestParam(value = "pn",defaultValue = "1") int pn,
                           Model model){
        PageHelper.startPage(pn,5);
        List users=usersService.selectAll();
        PageInfo page=new PageInfo(users,5);
        model.addAttribute("pageInfo",page);
        return "usersInfo";
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值