Spring Boot 整合 SSM

版本信息:JDK1.8,其他信息在pom.xml中可查。

项目目录结构如下: 

 

第一步:添加依赖

pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.isoft</groupId>
  <artifactId>isoft-ssm</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
      
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>
    <dependencies>
        
        <!-- 单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- 分页助手 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>3.7.5</version>
        </dependency>
        <dependency>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>0.9.1</version>
        </dependency>

        <!-- 通用Mapper -->
        <dependency>
            <groupId>com.github.abel533</groupId>
            <artifactId>mapper</artifactId>
            <version>2.3.4</version>
        </dependency>
        <!-- MySql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 连接池 -->
        <dependency>
              <groupId>c3p0</groupId>
              <artifactId>c3p0</artifactId>
              <version>0.9.1.2</version>
        </dependency>
        <!-- httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>

        <!-- JSP相关 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- Apache工具组件 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
            <exclusions>
                <exclusion>
                    <!-- 排除传递spring依赖 -->
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.3.3</version>
        </dependency>

        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.ehcache</groupId>
            <artifactId>ehcache-clustered</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- 资源文件拷贝插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- java编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  
</project>
pom.xml

 

第二步:创建配置文件

application.properties

用于设置端口号,日志级别,静态资源扫描等配置

该项目中使用默认配置,因此这个文件不需要写内容

 

第三步:创建资源文件

jdbc.properties

jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.driver=com.mysql.jdbc.Driver
jdbc.user=root
jdbc.password=root
jdbc.properties

 

第四步:创建mybatis-config配置文件

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>
        <typeAlias type="com.isoft.model.Person" alias="Person" />
    </typeAliases>
    <mappers>
        <mapper resource="com/isoft/dao/PersonMapper.xml"/>
    </mappers>
</configuration>
mybatis-config.xml

 

第五步:创建Spring配置文件

1、数据库连接配置文件:DBApplication.java

package com.isoft.config;

import java.beans.PropertyVetoException;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

@Configuration  // 表示这是配置文件类
@PropertySource(value= {"classpath:jdbc.properties"},ignoreResourceNotFound=true)
@ComponentScan(basePackages="com.isoft")
public class DBApplication {
    @Value("${jdbc.url}")
    private String jdbcUrl;
    @Value("${jdbc.driver}")
    private String driverClass;
    @Value("${jdbc.user}")
    private String user;
    @Value("${jdbc.password}")
    private String password;
    
    @Bean(destroyMethod="close")
    public DataSource dataSource() {
        ComboPooledDataSource cpds = new ComboPooledDataSource();
        try {
            cpds.setDriverClass(driverClass);
            cpds.setJdbcUrl(jdbcUrl);
            cpds.setUser(user);
            cpds.setPassword(password);
            cpds.setMinPoolSize(10);
            cpds.setMaxPoolSize(20);
            cpds.setInitialPoolSize(15);
            cpds.setMaxIdleTime(120);  // 指定连接数据库连接池的连接的最大空闲时间
            cpds.setAcquireIncrement(5);  // 当连接池中的连接耗尽时c3p0一次同时获取的连接数。Default:3
            cpds.setMaxStatements(100);  // JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。 如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0
            cpds.setIdleConnectionTestPeriod(60);  // 每60秒检查所有连接池中的空闲连接。Default: 0
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
        return cpds;
    }
}
DBApplication.java

 

2、mybatis配置文件:MyBatisConfig.java

package com.isoft.config;

import javax.sql.DataSource;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

@Configuration
@AutoConfigureAfter(DBApplication.class)  // 条件注解:在DBApplication实例化之后才执行
public class MyBatisConfig {
    @Autowired
    private DataSource dataSource;
    
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean() {
        SqlSessionFactoryBean sqlSessionFactoryBean
            = new SqlSessionFactoryBean();
        // 注入dataSource
        sqlSessionFactoryBean.setDataSource(dataSource);
        
        // 注入mybatis-config
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource resource = resolver.getResource("classpath:mybatis-config.xml");  // 创建源对象,用于注入配置文件
        sqlSessionFactoryBean.setConfigLocation(resource);

        return sqlSessionFactoryBean;
    }
}
MyBatisConfig.java

 

3、mybatis-mapper配置文件:MapperScannerConfig.java

package com.isoft.config;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration  // mapper映射的配置文件
@AutoConfigureAfter(MyBatisConfig.class)  // 条件注解:在MybatisConfig实例化之后才执行
public class MapperScannerConfig {
    // 读取sqlSessionFactoryBean
    @Autowired
    private SqlSessionFactoryBean sqlSessionFactoryBean;

    // 创建映射文件扫描对象
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("com.isoft.dao");
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
        return mapperScannerConfigurer;
    }
}
MapperScannerConfig.java

 

第六步:创建model层

Person.java

注:添加@Table(name=”person”)注解,表示数据库中对应的表名为person

package com.isoft.model;

import javax.persistence.Table;

@Table(name="person")
public class Person {
    private Integer id;
    private String name;
    private Integer age;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    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;
    }
    @Override
    public String toString() {
        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
    
}
Person.java

 

第七步:创建dao层

1、PersonDao.java接口文件

package com.isoft.dao;

import java.util.List;

import com.isoft.model.Person;

public interface PersonDao {
    public List<Person> findAll();
}
PersonDao.java

 

2、PersonMapper.xml  映射文件

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

<mapper namespace="com.isoft.dao.PersonDao">
    <select id="findAll" resultType="Person">
        select * from person
    </select>
</mapper>
PersonMapper.xml

 

第八步:创建Service层

PersonService.java:服务层文件

package com.isoft.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.isoft.dao.PersonDao;
import com.isoft.model.Person;

@Service
@Transactional
public class PersonService {
    @Autowired
    private PersonDao personDao;
    
    // 调用findAll
    @Transactional  // 用事务管理当前方法,若发生异常,则事务回滚
    public List<Person> queryList(){
        return personDao.findAll();
    }
}
PersonService.java

 

第九步:创建controller层

PersonController.java

package com.isoft.controller;

import java.util.List;

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.ResponseBody;

import com.isoft.model.Person;
import com.isoft.service.PersonService;

@Controller
public class PersonController {
    // 导入service
    @Autowired
    private PersonService personService;

    @RequestMapping("/list")
    @ResponseBody
    public String list(Model mode) {
        List<Person> list = personService.queryList();
        return list.toString();
    }
}
PersonController.java

 

第十步:创建主方法Main.java

- 注意文件放置的位置,该文件扫描的文件为当前包及其子包,因此放到其他包的上一级中,可以扫描其对应的所有配置文件

- 即放在com.isoft中

package com.isoft;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.isoft.config.DBApplication;

@SpringBootApplication
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(DBApplication.class,args);
    }

}
Main.java

 

测试:运行Main.java文件(Java Application运行)

运行结果如下:

 

 

posted on 2019-01-04 16:40  luoyu113  阅读(208)  评论(0编辑  收藏  举报