ssm整合详解

最近做项目用到了ssm,虽然以前用过ssm但这段时间发现,用过不代表就会了,即使以前用过,但现在要搭一个ssm框架不看教程还是很难,最基本的maven仓库需要哪些坐标都搞不清楚,所以今天打算写篇博客梳理一下。

一.基础梳理

俗话说:工欲善其事必先利其器,要想搭建一个ssm架子,首先必须了解ssm都代表什么,每一部分在架子里担任什么角色行驶什么作用。

1.spring

spring是开放源代码的设计层框架,它解决的是业务层逻辑和其他各层之间的耦合问题,思想是,平时我们主动new对象,内存帮我们创建对象分配内存,现在是我们需要什么对象直接从spring容器里取出就OK,以此实现松耦合的功能。
这个框架的特征:
轻量,控制反转,面向切面,容器等
spring是一个很强大的工具,值得我们深究

2.mybatis

谈到mybatis这个框架,我也少不了吹一波彩虹屁,这个半自动化的ORM框架真的很强大,她的前生是apache下的ibatis,至于他改名为mybatis是因为换主人了。这是一个持久层框架,他可以定制sql和高级的映射功能,她帮我们避免了绝大多数的JDBC代码和结果集的获取等。
至于mybatis的特点,那首要说的就是方便灵活,可以说开发写一个项目mybatis帮我们完成了三分之一的工作。

3.springmvc

接下来说说springmvc,这是一个属于SpringFrameWork的后续产品,也是spring全家桶的一部分,学web开发的都知道web三层架构,springmvc就是V层及视图层。在我目前看来springmvc给我最优质的感觉就是参数绑定这个强大技能,减少了自己每次主动从request域里找数据的痛苦,而且他附加的json数据自动转换也十分方便,虽然这个功能自己也很容易实现,但总觉的没人家的好用。

4.介绍了ssm的组成,就进入整合了

ssm整合当然是在maven项目里方便啊,如果在动态web项目里整合,那jar包够你下一壶的了。
建立maven项目我不写步骤了,如果还不知道用maven里的哪个Artifact的,那就自己一个一个建着看吧,先把哪个干什么的搞清楚再来。
这里先把我的项目结构图附上
ssm整合详解_第1张图片

下面说说 每个文件代表的含义

  • src/main/java 这个不多说,就是放代码的 地方
  • sr/main/resources 存放资源文件的 地方,诸如配置文件
    ---- generatorConfig.xml 这个是配置逆向工程的配置文件
    ---- jdbc.properties 数据库连接数据文件
    ---- log4j.properties 日志配置文件
    ---- springmvc.xml springmvc的配置文件
    ---- springmybatis.xml 这个文件我把spring和mybatis 的配置文件放在一起了,因为整合里mybatis没几行代码,单独用一个文件浪费,嘿嘿嘿。

此处说明下,本文只介绍ssm整合,不介绍mybatis逆向工程,如果感兴趣的可以去看
mybatis逆向工程
下面介绍每个文件都写了什么内容

首先是jdbc.properties文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test_all?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
username=root
password=123456
#\u5B9A\u4E49\u521D\u59CB\u8FDE\u63A5\u6570  
initialSize=0  
#\u5B9A\u4E49\u6700\u5927\u8FDE\u63A5\u6570  
maxActive=20  
#\u5B9A\u4E49\u6700\u5927\u7A7A\u95F2  
maxIdle=20  
#\u5B9A\u4E49\u6700\u5C0F\u7A7A\u95F2  
minIdle=1  
#\u5B9A\u4E49\u6700\u957F\u7B49\u5F85\u65F6\u95F4  
maxWait=60000

这个文件就不说了。如果这都看不懂劝你回头是岸吧。

接下来是log4j.properties

log4j.rootLogger=INFO,Console,File  
#\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u76EE\u7684\u5730\u4E3A\u63A7\u5236\u53F0  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.Target=System.out  
#\u53EF\u4EE5\u7075\u6D3B\u5730\u6307\u5B9A\u65E5\u5FD7\u8F93\u51FA\u683C\u5F0F\uFF0C\u4E0B\u9762\u4E00\u884C\u662F\u6307\u5B9A\u5177\u4F53\u7684\u683C\u5F0F  
log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n  
  
#\u6587\u4EF6\u5927\u5C0F\u5230\u8FBE\u6307\u5B9A\u5C3A\u5BF8\u7684\u65F6\u5019\u4EA7\u751F\u4E00\u4E2A\u65B0\u7684\u6587\u4EF6  
log4j.appender.File = org.apache.log4j.RollingFileAppender  
#\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55  
log4j.appender.File.File = logs/ssm.log  
#\u5B9A\u4E49\u6587\u4EF6\u6700\u5927\u5927\u5C0F  
log4j.appender.File.MaxFileSize = 10MB  
# \u8F93\u51FA\u6240\u4EE5\u65E5\u5FD7\uFF0C\u5982\u679C\u6362\u6210DEBUG\u8868\u793A\u8F93\u51FADEBUG\u4EE5\u4E0A\u7EA7\u522B\u65E5\u5FD7  
log4j.appender.File.Threshold = ALL  
log4j.appender.File.layout = org.apache.log4j.PatternLayout  
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

这里面可以不用知道,复制粘贴就好,感兴趣的可以去查下资料
接下来划重点了
先说spring-mybatie.xml

  
  
      
      
    
      
      
          
      
  
      
          
          
          
          
          
          
          
          
          
          
          
          
          
          
      
  
      
      
          
          
          
      
  
      
      
          
          
      
  
      
      
          
      
  

说下这里面一些必须配置的类和所配置的类是干什么的

  • org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
    这个类相信都知道是干什么的,不说了
  • org.apache.commons.dbcp.BasicDataSource
    这个类就是给dbcp连接池加上jdbc.properties文件里的数据
  • org.mybatis.spring.SqlSessionFactoryBean
    SQLSessionFactoryBean类是mybatis的核心类,必须配置,这个类用来获取session工厂
  • org.mybatis.spring.mapper.MapperScannerConfigurer
    此类作用是取代手动添加Mapper,自动扫描完成接口代理,顾名思义,底部是代理模式实现
    ssm整合详解_第2张图片
  • org.springframework.jdbc.datasource.DataSourceTransactionManager
    事务管理类,可以暂时不了解

接下来是springmvc.xml配置文件

  
  







   
      
          
              
                text/html;charset=UTF-8  
              
          
      


		
			
					
					
			
		



		
		
		
		
		
		
		 
        



	
	
            
                
                
                
                
            
        
        
            
                
                
            
        
        



	   
          
          


注解很详细,不说了,打字太累了
别忘了web.xml

  

  Archetype Created Web Application
  
     
      
        encodingFilter  
        org.springframework.web.filter.CharacterEncodingFilter  
        true  
          
            encoding  
            UTF-8  
          
      
      
        encodingFilter  
        /*  
      
    
      
      
        SpringMVC  
        org.springframework.web.servlet.DispatcherServlet  
          
            contextConfigLocation  
            classpath:spring-mvc.xml  
          
        1  
        true  
      
      
        SpringMVC  
        /  
      
      
        /index.jsp  
      


5.配置文件搞定,现在来看看具体代码吧

ssm整合详解_第3张图片
user.java
三个字段 id,username,password

package com.cc.dao;

import com.cc.domain.User;

public interface UserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}

UserMapper.xml




  
    
    
    
    
  
  
    id, user_name, password, age
  
  
  
    delete from user_t
    where id = #{id,jdbcType=INTEGER}
  
  
    insert into user_t (id, user_name, password, 
      age)
    values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
      #{age,jdbcType=INTEGER})
  
  
    insert into user_t
    
      
        id,
      
      
        user_name,
      
      
        password,
      
      
        age,
      
    
    
      
        #{id,jdbcType=INTEGER},
      
      
        #{userName,jdbcType=VARCHAR},
      
      
        #{password,jdbcType=VARCHAR},
      
      
        #{age,jdbcType=INTEGER},
      
    
  
  
    update user_t
    
      
        user_name = #{userName,jdbcType=VARCHAR},
      
      
        password = #{password,jdbcType=VARCHAR},
      
      
        age = #{age,jdbcType=INTEGER},
      
    
    where id = #{id,jdbcType=INTEGER}
  
  
    update user_t
    set user_name = #{userName,jdbcType=VARCHAR},
      password = #{password,jdbcType=VARCHAR},
      age = #{age,jdbcType=INTEGER}
    where id = #{id,jdbcType=INTEGER}
  

package com.cc.service;

import com.cc.domain.User;

public interface IUserService {
	 public User getUserById(int userId);  

}

package com.cc.serviceimpl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.cc.dao.UserMapper;
import com.cc.domain.User;
import com.cc.service.IUserService;

@Service("userService")  
public class UserServiceImpl implements IUserService {  
    @Resource  
    private UserMapper userDao;  
    
    public User getUserById(int userId) {  
        // TODO Auto-generated method stub  
        return this.userDao.selectByPrimaryKey(userId);  
    }  
  
}  

package com.cc.controller;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.cc.domain.User;

@Controller  
@RequestMapping("/user")  

public class UserController {  
    private static Logger log=LoggerFactory.getLogger(UserController.class);
      
    
    // /user/test?id=1
    @RequestMapping(value="/test",method=RequestMethod.GET)  
    public String test(HttpServletRequest request,Model model){  
        int userId = Integer.parseInt(request.getParameter("id"));  
        System.out.println("userId:"+userId);
        User user=null;
        if (userId==1) {
             user = new User();  
             user.setAge(11);
             user.setId(1);
             user.setPassword("123");
             user.setUserName("javen");
        }
       
        log.debug(user.toString());
        model.addAttribute("user", user);  
        return "index";  
    }  
}  
package com.cc.controller;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.cc.domain.User;

@Controller  
@RequestMapping("/user")  

public class UserController {  
    private static Logger log=LoggerFactory.getLogger(UserController.class);
      
    
    // /user/test?id=1
    @RequestMapping(value="/test",method=RequestMethod.GET)  
    public String test(HttpServletRequest request,Model model){  
        int userId = Integer.parseInt(request.getParameter("id"));  
        System.out.println("userId:"+userId);
        User user=null;
        if (userId==1) {
             user = new User();  
             user.setAge(11);
             user.setId(1);
             user.setPassword("123");
             user.setUserName("javen");
        }
       
        log.debug(user.toString());
        model.addAttribute("user", user);  
        return "index";  
    }  
}  

ssm整合详解_第4张图片

你可能感兴趣的:(ssm)