整合ssm项目--环境搭建

  通过学习SpringMvc框架,Spring框架,Mybatis框架基础知识后,尝试整合第一个ssm项目。以下是整合项目的学习笔记。

1.搭建Mybatis环境,创建数据库

  • 1.1创建数据库与表,并且连接数据库。
create database `ssmbuild`; 
use `ssmbuild`;
create table `books`(
   `bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT `书id`,
   `bookName`  VARCHAR(100) NOT NULL COMMENT `书名`,
   `bookCounts` INT(11) NOT NULL COMMENT `数量`,
   `detail` VARCHAR(200) NOT NULL COMMENT `描述`,
   KEY `boolID` (`bookID`)                                
)ENGINE=INNODB DEFAULT CHARSET=utf8;

insert into books(bookName,bookCounts,detail)values
('java','1','从入门到放弃'),
('MySQL','10','从删库到跑路'),
('Linux','5','从进门到回家');

连接数据库:
在这里插入图片描述
在这里插入图片描述

  • 1.2 导入j项目所需jar包,以及静态资源导出问题
 <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.0.8</version>
        </dependency>
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
        
		<!---servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
		
		<!---mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.2</version>
        </dependency>
		
		<!---spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
    </dependencies>

    <!--静态资源导出问题-->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

  • 1.3 创建实体类对象book
package com.jack.pojo;

public class Books {
    private int bookID;
    private String bookName;
    private int bookCounts;
    private String detail;

    public int getBookID() {
        return bookID;
    }

    public void setBookID(int bookID) {
        this.bookID = bookID;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public int getBookCounts() {
        return bookCounts;
    }

    public void setBookCounts(int bookCounts) {
        this.bookCounts = bookCounts;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    @Override
    public String toString() {
        return "Books{" +
                "booId=" + bookID +
                ", bookName='" + bookName + '\'' +
                ", bookCounts=" + bookCounts +
                ", detail='" + detail + '\'' +
                '}';
    }
}
  • 1.4 创建接口mapper类
public interface BookMapper {
    //增加一本书
    int addBook(Books book);
    //删除一本书
    int deleteBook(@Param("bookID") int id);
    //更新一本书
    int updateBook(Books book);
    //查询一本书
    Books queryBookById(@Param("bookID") int id);
    //查询全部书籍
    List<Books> queryAllBook();
    //通过书名查询书籍
    List<Books> queryBookByName(@Param("bookName") String bookName);
}
  • 1.5 配置mybatis文件
    在这里插入图片描述

  • 1.6 创建mapper的xml配置文件

  parameterType属性表示向数据库添加的对象类型,resultType属性表示从数据库获取到对象类型
在这里插入图片描述

2.Spring环境搭建

  搭建Spring环境时,我们需要了解到需要注入到spring容器中的对象有哪些,ssm项目放入spring容器中的对象有:dao层的mapper对象,service层的service对象。
  所以spring的配置主要是为了在spring容器中创建上述两个对象。

2.1 spring-dao.xml文件配置

  • 2.1.1 创建数据库的关联文件(存放数据库的四条基本信息)
  • datebase.properties文件:

注意:使用mysql版本8.0+时,需要增加一个时区设置。
在这里插入图片描述

  • 2.1.2 配置spring-dao.xml文件
    1)关联数据库信息文件;
    2)通过信息文件创建连接池(采用的是c3p0连接池);
    3)获取SqlSessionFactory工厂;
    4)通过MapperScannerConfigurer获取mapper类(注入SqlSessionFactory工厂,配置dao扫描包)。
  <!--关联数据库配置文件-->
    <context:property-placeholder location="classpath:database.properties"/>
    <!--连接池-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        
        <!--c3p0的私有属性-->
<!--        <property name="maxPoolSize" value="30"/>-->
<!--        <property name="minPoolSize" value="10"/>-->
        <!--关闭连接后不自动commit-->
<!--        <property name="autoCommitOnClose" value="false"/>-->
        <!--获取连接超时时间-->
<!--        <property name="checkoutTimeout" value="10000"/>-->
        <!--当获取连接失败次数-->
<!--        <property name="acquireRetryAttempts" value="2"/>-->
    </bean>

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

    <!--配置dao扫描包,动态实现了dao接口可以注入到spring容器中!-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.jack.dao"/>
    </bean>
  • 2.1.2 配置spring-service.xml文件
      获取到mapper类之后,通过spring的ioc操作获取到service类。
    1)创建service接口与实现类

  • service接口:

public interface BookService {
    //增加一本书
    int addBook(Books book);
    //删除一本书
    int deleteBook(int id);
    //更新一本书
    int updateBook(Books book);
    //查询一本书
    Books queryBookById(int id);
    //查询全部书籍
    List<Books> queryAllBook();
    //通过书名查询书籍
    List<Books> queryBookByName(String bookName);

  • service实现类,添加mapper属性
public class BookServiceImpl implements BookService {
    //service调用dao层
    private BookMapper bookMapper;
	//添加set方法,让spring容器注入
    public void setBookMapper(BookMapper bookMapper) {
        this.bookMapper = bookMapper;
    }

    public int addBook(Books book) {
        return bookMapper.addBook(book);
    }

    public int deleteBook(int id) {
        return bookMapper.deleteBook(id);
    }

    public int updateBook(Books book) {
        return bookMapper.updateBook(book);
    }

    public Books queryBookById(int id) {
        return bookMapper.queryBookById(id);
    }

    public List<Books> queryAllBook() {
        return bookMapper.queryAllBook();
    }
    public List<Books> queryBookByName(String bookName){
        return bookMapper.queryBookByName(bookName);
    }
}

2)配置spring-service.xml文件
  直接注入mapper即可,以及添加事务支持

 <bean id="bookServiceImpl" class="com.jack.service.BookServiceImpl">
        <property name="bookMapper" ref="bookMapper"/>
    </bean>

    <!--声明事务配置-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--aop事务支持-->

  注意:在创建spring-dao.xml与spring-service.xml文件的时候,最好将两个配置文件整合到一个Modules里面,这样在service类注入mapper类时才能正确识别到需要注入的具体mapper对象。创建的applicationContext.xml文件是为了在后端需要获取到mapper对象与service对象时,两者都只需通过applicationContext一个文件中获取
在这里插入图片描述

  • applicationContext.xml文件:

在这里插入图片描述

3.Spring Mvc环境搭建

  • 3.1 为本项目添加web项目支持
    在这里插入图片描述
  • 3.2 web.xml文件配置

1)注册Spring Mvc核心配置DispacherServlet;
2)添加乱码过滤配置;

 <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--乱码过滤-->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--Session-->
    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>
  • 3.3 配置spring-mvc.xml文件

  • 采用注解方式
    1)扫描controller类;
    2)添加注解驱动;
    3)静态资源导出问题;
    4)视图解析器。

 <context:component-scan base-package="com.jack.controller"/>

    <mvc:annotation-driven/>
    <mvc:default-servlet-handler/>

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

注意:同样applicationContext.xml文件需要import此处spring-mvc.xml文件。
在这里插入图片描述

  • 3.4 创建Controller类
    在这里插入图片描述

总结

  环境配置都是固定的,只需要将一些配置的逻辑熟记,另外还有sql语句的编写。配置文件时,一定要将每个xml文件放入一个Modules里面,才能ssm项目各个配置产生关联。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值