zoukankan      html  css  js  c++  java
  • 整合SSM(一)

    SSM整合

    数据库环境

    创建存放书籍的数据库

    CREATE DATABASE `ssmbuild`;
    
    USE `ssmbuild`;
    
    DROP TABLE IF EXISTS `books`;
    
    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 `bookID` (`bookID`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8
    
    INSERT  INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES 
    (1,'Java',1,'从入门到放弃'),
    (2,'MySQL',10,'从删库到跑路'),
    (3,'Linux',5,'从进门到进牢');
    

    如下图:

    基本环境搭建

    1、新建一个maven项目ssmbuild,添加web的支持

    2、导入所需的依赖

    <dependencies>
        <!--aop-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.4</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectLombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
        </dependency>
        <!--Junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!-- 数据库连接池 c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
        <!--Servlet - JSP - Jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</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.3</version>
        </dependency>
        <!--Spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>
    </dependencies>
    

    3、Maven资源过滤设置

    <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>
    

    4、建立基本结构和配置框架!

    • com.star.controller
    • com.star.dao
    • com.star.pojo
    • com.stat.service
    • applicationContext.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"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
         https://www.springframework.org/schema/beans/spring-beans.xsd">
        
    </beans>
    
    • 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>
    
    </configuration>
    
    • dataBase.properties

    MyBatis层编写

    1、数据库配置文件编写

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
    username=root
    password=123456
    

    2、IDEA连接数据库

    3、编写mybatis核心配置文件

    <?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.star.pojo"/>
        </typeAliases>
    
        <mappers>
            <mapper resource="com/star/dao/bookMapper.xml"/>
        </mappers>
        
    </configuration>
    

    4、编写数据库对应的实体类 com.star.pojo.books

    package com.star.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class books {
        private int bookID;
        private String booName;
        private int bookCounts;
        private String  detail;
    }
    

    5、编写Dao层对应得Mapper接口

    package com.star.dao;
    
    import com.star.pojo.books;
    import org.apache.ibatis.annotations.Param;
    
    import java.util.List;
    
    public interface bookMapper {
    
        // 添加一本书
        public int addBook(books book);
    
        // 通过id删除一本书
        public int deleteBookByID(@Param("bookID") int id);
    
        // 修改一本书
        public int updateBook(books books);
    
        // 查找所有的书
        public List<books> queryAllBooks();
    
        // 通过id查找一本书
        public books queryBookById(@Param("bookID") int id);
    
    }
    

    6、编写对应得Mapper.xml文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.star.dao.bookMapper">
    
        <insert id="addBook" parameterType="books">
            insert into ssmbuild.books (bookName, bookCounts, detail) values (#{bookName},#{bookCounts},#{detail});
        </insert>
    
        <delete id="deleteBookByID" parameterType="int">
            delete from ssmbuild.books where bookID=#{bookID};
        </delete>
    
        <update id="updateBook" parameterType="books">
            update ssmbuild.books set bookName=#{bookName}, bookCounts=#{bookCounts}, detail=#{detail} where bookID=#{bookID};
        </update>
    
        <select id="queryAllBooks" resultType="books">
            select * from ssmbuild.books;
        </select>
    
        <select id="queryBookById" parameterType="int" resultType="books">
            select * from ssmbuild.books where bookID=#{bookID};
        </select>
    </mapper>
    

    7、编写Service层对应的接口和实现类

    接口:

    package com.star.service;
    
    import com.star.pojo.books;
    import org.apache.ibatis.annotations.Param;
    
    import java.util.List;
    
    public interface bookService {
    
        // 添加一本书
        public int addBook(books book);
    
        // 通过id删除一本书
        public int deleteBookByID(@Param("bookID") int id);
    
        // 修改一本书
        public int updateBook(books books);
    
        // 查找所有的书
        public List<books> queryAllBooks();
    
        // 通过id查找一本书
        public books queryBookById(@Param("bookID") int id);
    }
    

    实现类:

    package com.star.service;
    
    import com.star.dao.bookMapper;
    import com.star.pojo.books;
    
    import java.util.List;
    
    public class bookServiceImpl implements bookService {
    
        private bookMapper bookMapper;
    
        public void setBookMapper(com.star.dao.bookMapper bookMapper) {
            this.bookMapper = bookMapper;
        }
    
        public int addBook(books book) {
            return bookMapper.addBook(book);
        }
    
        public int deleteBookByID(int id) {
            return bookMapper.deleteBookByID(id);
        }
    
        public int updateBook(books books) {
            return  bookMapper.updateBook(books);
        }
    
        public List<books> queryAllBooks() {
            return bookMapper.queryAllBooks();
        }
    
        public books queryBookById(int id) {
            return bookMapper.queryBookById(id);
        }
    }
    

    OK!到这里底层需求操作编写完成;

    Spring层

    1、关联数据库文件

    <context:property-placeholder location="classpath:dataBase.properties"/>
    

    2、配置数据库连接池

        <bean name="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"/>
            <!-- 关闭连接后自动提交事物 -->
            <property name="autoCommitOnClose" value="false"/>
            <!-- 获取连接超时时间 -->
            <property name="checkoutTimeout" value="1000"/>
            <!-- 当获取连接失败重试次数 -->
            <property name="acquireIncrement" value="2"/>
        </bean>
    

    3、配置SqlSessionFactory

        <bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 注入数据库连接池 -->
            <property name="dataSource" ref="dataSource"/>
            <!-- 配置MyBatis全局配置文件:mybatis-config.xml -->
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
        </bean>
    

    4、配置扫描dao接口包,动态实现Dao接口注入到spring容器中

        <bean name="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!-- 注入sqlSessionFactory -->
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
            <!-- 给出需要扫描Dao接口包 -->
            <property name="basePackage" value="com.star.dao"/>
        </bean>
    

    5、将service层的所有业务注入到spring中

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

    6、配置声明式事务

        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!--注入数据源-->
            <property name="dataSource" ref="dataSource"/>
        </bean>
        <!--aop事务支持-->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <!--给哪些方法配置事务   配置事务的传播特性-->
            <tx:attributes>
                <!--* 表示给所有的方法配置事务     REQUIRED 默认的传播特性-->
                <tx:method name="*" propagation="REQUIRED"/>
            </tx:attributes>
        </tx:advice>
        <aop:config>
            <!--所用类的所有方法-->
            <aop:pointcut id="txPointcut" expression="execution(* com.star.dao.*.*(..))"/>
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
        </aop:config>
    

    SpringMVC层

    1、编写web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    
        <!--核心处理器-->
        <servlet>
            <servlet-name>DispatcherServlet</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>
        </servlet>
        <servlet-mapping>
            <servlet-name>DispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
        <!--乱码过滤器-->
        <filter>
            <filter-name>encoding</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>encoding</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!--Session过期时间-->
        <session-config>
            <session-timeout>15</session-timeout>
        </session-config>
    </web-app>
    

    2、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:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           https://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           https://www.springframework.org/schema/context/spring-context.xsd 
           http://www.springframework.org/schema/mvc 
           https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <!--扫描配置包-->
        <context:component-scan base-package="com.star.controller"/>
        <!--配置mvc注解驱动-->
        <mvc:annotation-driven/>
        <!--静态资源默认配置-->
        <mvc:default-servlet-handler/>
    
        <!--视图解析器-->
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp"/>
            <property name="suffix" value=".jsp"/>
        </bean>
        
    </beans>
    

    3、Spring配置整合文件,applicationContext.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           https://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <import resource="classpath:spring-dao.xml"/>
        <import resource="classpath:spring-service.xml"/>
        <import resource="classpath:spring-mvc.xml"/>
    
    </beans>
    
  • 相关阅读:
    Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor
    Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security
    IdentityServer4 And AspNetCore.Identity Get AccessToken 问题
    Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute
    Java Spring Boot VS .NetCore (七) 配置文件
    Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml
    Java Spring Boot VS .NetCore (五)MyBatis vs EFCore
    Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
    Java Spring Boot VS .NetCore (三)Ioc容器处理
    Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
  • 原文地址:https://www.cnblogs.com/lmx-181028/p/12506345.html
Copyright © 2011-2022 走看看