本篇主要讲解基于SpringBoot+mybatis实现三层架构项目。
三层架构主要包括:表示层,业务层,数据访问层,还有实体类层。
早期的SSM框架中,mybatis的使用比较麻烦,需要配置自己的XML文件,DAO层通过接口映射XML配置等。虽然开发方提供了generator可以自动生成实体类和DAO文件,但没有在根本上改变配置上的复杂度。
但随着springboot的出现,springboot+mybatis可以完全注解不用配置文件,也可以轻松上手写代码了。这种方式等下篇文章再做介绍,本篇主要是把SSM项目改版成Springboot+mybatis项目。
OK,在前一篇文章的基础上继续。
第一步、修改pom.xml文件,添加mysql数据库和mybatis相关。
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<groupId>com.pxy</groupId>
<artifactId>BlogManager</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<!-- 设置字符集 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 设置Java版本 -->
<java.version>1.7</java.version>
</properties>
<dependencies>
<!-- 对Web开发的支持,包含tomcat等Web开发特性 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 使用MySql数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 引入mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!-- DevTools in Spring Boot 项目热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 如果直接Main启动spring,以下plugin必须添加。-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
第二步、在src/main/java中添加以下三层相关包。
com.pxy.controller:控制器
com.pxy.dao:数据访问层
com.pxy.entity:实体类
com.pxy.service:业务层
com.pxy.test:启动APP
第三步、使用generator生成实体类和DAO层,并复制到项目中。
第四步、在src/main/resources下添加application.properties或application.yml文件对APP进行配置,spring.datasource配置好后,SqlSesisonFactory、Mapper等都会自动注入。
application.properties写法:
spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/blogdb?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
mybatis.type-aliases-package=com.pxy.entity
mybatis.mapperLocations=classpath:com.pxy.dao/*.xml
application.yml写法(注意缩进):
spring:
devtools:
restart:
enabled: true
additional-paths: src/main/java
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/blogdb?characterEncoding=UTF-8
username: root
password: root
mybatis:
type-aliases-package: com.pxy.entity
mapperLocations: classpath:com.pxy.dao/*.xml
推荐使用application.yml的写法。
第五步、编写Service层代码、Controller代码和启动APP类代码。
Service代码:
@Service
@Service
public class AuthorService {
@Autowired
private AuthorMapper authorMapper;
public Author findById(int id){
return authorMapper.selectByPrimaryKey(id);
}
}
Controller代码:
//spring4里的注解,@RestController是@ResponseBody和@Controller的缩写
@RestController
public class AuthorController {
@Autowired
private AuthorService authorService;
@RequestMapping("/hello")
public String hello(){
Author author = authorService.findById(1);
return author.getUsername();
}
}
App代码:
@SpringBootApplication(scanBasePackages={"com.pxy.*"}) //表示扫描com.pxy下所有包
@MapperScan("com.pxy.dao") //表示对mapper扫描
public class App {
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(App.class, args);
}
}
第六步、启动项目,并访问localhost:8080/hello。