SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)

今天整合三大框架,Spring+SpringMVC+Mybatis,一起学习
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第1张图片

第一步:开始创建新工程:

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第2张图片
1.1、导入依赖



    4.0.0

    com.beijihou.ssm_integration
    beijihou
    1.0-SNAPSHOT

    war

    
    
        4.12
        5.0.10.RELEASE
        3.4.6
        1.2.2
        1.2.15
        5.1.32
        1.6.4
        2.9.0
        1.0.9
        4.3.5
        1.2
        2.5
        2.0

    




    
        
        
            junit
            junit
            ${junit.version}
            test
        

        
        
            org.springframework
            spring-test
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
            org.springframework
            spring-jdbc
            ${spring.version}
        
        
            org.springframework
            spring-aspects
            ${spring.version}
        

        
        
            org.springframework
            spring-web
            ${spring.version}
        

        
        
        
            c3p0
            c3p0
            0.9.1.2
        


        
        
            org.mybatis
            mybatis
            ${mybatis.version}
        
        
            org.mybatis
            mybatis-spring
            ${mybatis.spring.version}
        
        
            com.github.miemiedev
            mybatis-paginator
            ${mybatis.paginator.version}
        

        
        
            mysql
            mysql-connector-java
            ${mysql.version}
        

        
            org.slf4j
            slf4j-log4j12
            ${slf4j.version}
        


        
        
            com.alibaba
            druid
            ${druid.version}
        

        
        
            org.apache.httpcomponents
            httpclient
            ${httpclient.version}
        

        
        
            jstl
            jstl
            ${jstl.version}
        
        
            javax.servlet
            servlet-api
            ${servlet-api.version}
            provided
        
        
            javax.servlet
            jsp-api
            ${jsp-api.version}
            provided
        



    


    
        ${project.artifactId}
        
            
            
                org.apache.maven.plugins
                maven-resources-plugin
                2.7
                
                    UTF-8
                
            
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.2
                
                    1.8
                    1.8
                    UTF-8
                
            
            

            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                    8080
                    /
                
            
        

    


1.2、补充项目目录
也就是在main目录下添加一个webapp目录,但不是随意添加,按下面步骤来:
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第3张图片
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第4张图片

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第5张图片

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第6张图片
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第7张图片

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第8张图片
这两个路径都改成:src下的main下的webapp这个路径

最终效果:
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第9张图片

第二步:配置Spring的环境、配置文件

2.1、引入日志和jdbc的配置文件

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第10张图片

jdbc.properties的内容,注意账号密码换成你自己的:

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmtravel
jdbc.username=root
jdbc.password=bq123456

log4j.properties内容:

log4j.rootLogger=INFO,A1,file
log4j.logger.org.apache=DEBUG
log4j.appender.A1.Target=System.err
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.File=G:/mylog.log
log4j.appender.file.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n

2.2、在resources目录下创建一个Spring的目录用来存放Spring的相关配置文件
然后在这个目录里创建相关的配置文件:applicationContext.xml

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第11张图片
在这个applicationContext中需要输入下面这些配置:



       
    
    
    
    
        
        
        
        
    
    

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第12张图片当然你如果使用的是德鲁伊数据库连接池的话,那就这四大金刚那个diverClass的class必须是:driverClassName

第三步:配置Mybatis
3.1、将mybatis交给spring管理
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第13张图片
首先得在spring中创建一个名为:applicationContext-mybatis.xml的文件,文件头信息就和spring的配置文件的头信息一致即可。

然后在这个文件中,配置SqlsessionFactoryBean并将其交给Spring。




    
    
        
        
        
        
    

    
        

        
    

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第14张图片
需要注意的是:
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第15张图片
在这里指定数据源的时候,因为数据源实在spring中配置的,所以会爆红,这个时候别慌,按:Ctrl+shift+alt+s 进入之后打钩:

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第16张图片

然后就可以了。

然后还得创建一个专门用来存放mybatis配置文件的目录mapper,以方便其配置文件归类整理。

创建包:com.beijihou.ssm.mapper,并在其中创建一个接口“UserMapper。
创建包:com.beijihou.ssm.pojo,并在其中创建一个User实体类。
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第17张图片
实体类代码:(要和数据库中的表头一一对应)

package com.beijihou.ssm.pojo;

import java.util.Date;

public class User {

    private Long id;

    // 用户名
    private String userName;

    // 密码
    private String password;

    // 姓名
    private String name;

    // 年龄
    private Integer age;

    // 性别,1男性,2女性
    private Integer sex;

    // 出生日期
    private Date birthday;

    // 创建时间
    private Date created;

    // 更新时间
    private Date updated;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }

    public Date getUpdated() {
        return updated;
    }

    public void setUpdated(Date updated) {
        this.updated = updated;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", name=" + name
                + ", age=" + age + ", sex=" + sex + ", birthday=" + birthday + ", created=" + created
                + ", updated=" + updated + "]";
    }

}

第四步,开始写sql语句
4.1、在userMapper接口中,书写查询代码:

package com.beijihou.ssm.mapper;

import com.beijihou.ssm.pojo.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {

    User selectUserById(@Param("id") Long id);
}

然后鼠标移动到方法名上,按alt+Enter,选择第一项,自动生成对应的xml中的sql代码
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第18张图片

自动生成之后,然后进入到userMapper.xml中添加sql语句
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第19张图片

第五步、
这就基本配置完成了,可以去测试了
在userMapper接口中,鼠标移到接口名中,alt+Enter
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第20张图片
选择Create Test 进入之后
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第21张图片
直接点ok创建测试类

//测试类代码
package com.beijihou.ssm.mapper;

import com.beijihou.ssm.pojo.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:spring/applicationContext*.xml")
public class UserMapperTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test(){
        User user = userMapper.selectUserById(1L);
        System.out.println(user);
    }
}

当我们运行测试方法的时候,报错了,报的是这个错误:
java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;

什么原因呢,这句话的意思是抽象方法错误,其实就是版本的问题,就是spring单用时候没问题,mybatis单用也没问题,但是合起来的时候,就有问题了。

打开我们的版本依赖管理
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第22张图片
把spring版本提升一下啊,改成5.0.12
SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第23张图片
把mybatis.spring的版本改成1.3.2就可以运行成功了

SSM整合(Spring/SpringMVC/Mybatis)和Maven聚合工程(待优化)_第24张图片
跑成功之后,发现很复杂,还需要进一步优化!

你可能感兴趣的:(Spring中遇到的问题)