开启 Spring Boot 之旅 SSM 整合
我这人其实是很懒的,不怎么喜欢写博客,额~,应该是从来不写的。哈哈~,但是呢,我是很乐意给大家讲解一下新的东西(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。

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

PS:我们可以利用 IDEA 直接配置 Spring Boot 模版,但是有时候因为网络问题,总是会少点什么,所以,还是直接从官网下载,然后拖到 IDEA 中来。
二、好了,开始我们的配置吧,额,从哪下手呢?我个人比较喜欢从数据库下手,那就,Let's begin!

三、 以上就是数据库表的结构,是不是很简单?凡事都是由简入繁的,这样也能过让大家看的不那么凌乱!数据库建好了,先把 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 环境
- 设置 application.properties 文件,添加如下内容
#Mybatis
mybatis.type-aliases-package=SpringBoot.SSM.pojo
ps:只需要指定别名就可以了,其他的不用配置
- 在 SSM 包下新建 mapper 包,添加 UserMapper 接口:
@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);
}
}

没有问题,已经插入进来了。好,继续开发我们的服务层。
六、创建 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();
}
}

没有问题,已经查出来了。就这样结束了吗?我怎么感觉日志跟之前的不太一样?你猜对了,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
熟悉的界面就回来了

好了,框架基本上就搭建完了,对了,差点忘了我们的启动类!
@SpringBootApplication
public class SsmApplication {
public static void main(String[] args) {
SpringApplication.run(SsmApplication.class, args);
}
}
也是它在幕后扮演着重要的角色,基本的功能已经实现了,细心的朋友可能会发现,在项目开始的时候,我还引入了 Redis 依赖,现在的程序每次查找都会跑到数据库里要数据,这可不太好,所以,我们采用 Redis 缓存来减轻数据库的负担,那这就是接下来要处理的事情了,我会在下一篇文章中给大家讲解 Redis 缓存来提升程序的访问速度!
-=敬请期待=-