Java

开启 Spring Boot 之旅 SSM 整合

2017-11-10  本文已影响0人  Tubetrue01

我这人其实是很懒的,不怎么喜欢写博客,额~,应该是从来不写的。哈哈~,但是呢,我是很乐意给大家讲解一下新的东西(PS: 只能说对初级的童鞋吧)的。这就构成矛盾了,所以从这篇文章开始,我要积极克服掉我的懒惰!!!
每次我遇到问题的时候,我都会去网上查找资料,试图去解决。可是,当我一篇文章一篇文章的浏览之后呢,我发现!那是相当的、极其的相似。有的不管对不对,都给你怼上了,这不能容忍啊,所以,我就开一个先例吧,本着为大家负责的态度,我的代码都是经过测试没有问题之后才会发布出来。当然,人非圣人,如果文章中有错的地方,欢迎大家积极指出,可别仍拖鞋啊!!!


工具:IntelliJ IDEA-2017.2,JDK1.9,MAVEN

一、首先来到打开链接 Spring Boot,Group 就设置为 Spring Boot ,Artifact 设置为:SSM,Maven 项目,Spring Boot 版本1.5.8,添加 Web、MyBatis、MySQL、Thymeleaf 还有 Redis。
image

导到我们的 IDEA 中来,大体框架是这样的:


image

PS:我们可以利用 IDEA 直接配置 Spring Boot 模版,但是有时候因为网络问题,总是会少点什么,所以,还是直接从官网下载,然后拖到 IDEA 中来。

二、好了,开始我们的配置吧,额,从哪下手呢?我个人比较喜欢从数据库下手,那就,Let's begin!
image
三、 以上就是数据库表的结构,是不是很简单?凡事都是由简入繁的,这样也能过让大家看的不那么凌乱!数据库建好了,先把 MySQL 的连接配置好,打开我们的 application.properties 文件:
#MySQL
spring.datasource.url=jdbc:mysql:///Test
spring.datasource.username=root
spring.datasource.password=******

由于 SpringBoot 足够聪明,我们不用写 driver,它会根据 url 自动推算出来,你用的是 MySQL。

四、接下来,我们该配置实体类了。
package SpringBoot.SSM.pojo;

public class User {
    private Integer id;
    private String username;
    private int age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", age=" + age +
                '}';
    }
}

五、创建 MyBatis 环境
#Mybatis
mybatis.type-aliases-package=SpringBoot.SSM.pojo

ps:只需要指定别名就可以了,其他的不用配置

@Mapper
public interface UserMapper {
    // Select All users
    List<User> selectAll();
    // Select By Id
    User selectById(int id);
    // Insert user
    int save(User user);
}

ps:注意添加 @Mapper 注解,这样 Spring Boot 会自动扫描它。
相应的,在 Resources 目录下新建 SpringBoot/SSM/mapper/UserMapper.xml文件,注意路径,这样的话,配置文件就会放到 UserMapper 接口目下了。

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="SpringBoot.SSM.mapper.UserMapper">
    <select id="selectAll" resultType="user">
        select * from user
    </select>
    <select id="selectById" resultType="user" parameterType="int">
        select * from user where id = #{value}
    </select>
    <insert id="insert" parameterType="user">
        insert into user (username, age) values (#{username}, #{age})
    </insert>
</mapper>

好了,让我们来测试一下,看看是否能够连上数据库。打开测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SsmApplicationTests {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void contextLoads() {
        User user = new User();
        user.setUsername("Springboot");
        user.setAge(23);
        this.userMapper.insert(user);
    }
}
image.png

没有问题,已经插入进来了。好,继续开发我们的服务层。

六、创建 Service 层

在 SSM 下新建 service/UserService 接口

public interface UserService {
    // Find all users
    List<User> findAll();
    // Find user by id
    User findById(int id);
    // Save
    int save(User user);
}

写好实现类:UserServiceImpl

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    
    @Override
    public List<User> findAll() {
        return this.userMapper.selectAll();
    }

    @Override
    public User findById(int id) {
        return this.userMapper.selectById(id);
    }

    @Override
    public int save(User user) {
        return this.userMapper.insert(user);
    }
}

搞定!就剩下 controller 层了。

七、创建 Controller 层

在 SSM 目录下新建 controller/UserController

@RestController
@RequestMapping("/user")
@Scope("request")
public class UserController {

  @Autowired
  private UserService userService;

  @RequestMapping("/showAll")
  public List<User> showAll(){
      return this.userService.findAll();
  }
}
image.png
没有问题,已经查出来了。就这样结束了吗?我怎么感觉日志跟之前的不太一样?你猜对了,SpringBoot 默认用的是 logback,所以我们得换回 log4j。
修改 pom.xml 文件
<!--Exclude logback-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--Log4j-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
            <version>RELEASE</version>
        </dependency>

添加 log4j.properties 文件到 Resources 根目录

log4j.rootLogger=debug,stdout,logfile
logger.SpringBoot.SSM.mapper=debug
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=Tubetrue01.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n

熟悉的界面就回来了


image.png

好了,框架基本上就搭建完了,对了,差点忘了我们的启动类!

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

也是它在幕后扮演着重要的角色,基本的功能已经实现了,细心的朋友可能会发现,在项目开始的时候,我还引入了 Redis 依赖,现在的程序每次查找都会跑到数据库里要数据,这可不太好,所以,我们采用 Redis 缓存来减轻数据库的负担,那这就是接下来要处理的事情了,我会在下一篇文章中给大家讲解 Redis 缓存来提升程序的访问速度!

-=敬请期待=-

上一篇 下一篇

猜你喜欢

热点阅读