题外话
相信大家都是从 SSM 时代过来的,那时候看到一大堆配置文件,心态必崩。有时候在一个地方的配置文件写错,可能整个项目都会无法运行,甚至根本找不到错误,所以《莫生气》也成为了程序猿的必备书籍。。。后来 Spring Boot 横空出现,终于不用天天面对配置文件了,莫名开心! Spring Boot 是世界上最好的框架!哈哈。
依赖导入
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
修改配置文件
application.properties:
spring.profiles.active: dev
application-dev.properties:
server.port = 8080
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
mybatis.mapper-locations = classpath:mapping/*Mapper.xml
mybatis.type-aliases-package = edu.szu.test.entity
logging.level.com.example.mapper = debug
在这里我使用了两个配置文件,application.properties 和 application-dev.properties。为什么我们不能一个文件写完配置呢?
这是由于我们需要在项目中配置多套环境,通常来说,一个项目有多种环境,开发环境,测试环境,生产环境,等等。每个环境中使用的参数是不同的,所以我们就可以把每个环境的参数配置到主配置文件中,这样在想用哪个环境的时候只需要在主配置文件中将用的配置文件写上就行。
注意,在 Spring Boot 中多环境配置文件名需要满足 application-{profile}.properties 的格式,其中{profile}对应你的环境标识,比如:
- application-dev.properties :开发环境
- application-test.properties :测试环境
- application-prod.properties :生产环境
至于哪个具体的配置文件会被加载,需要在 application.properties 文件中通过spring.profiles.active 属性来设置,其值对应 {profile} 值。
创建数据表
sql 代码如下:
CREATE TABLE `book` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL,
`price` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
数据表结构
可以看到我已经插入了两条数据
创建 pojo
创建一个 entity 包,然后在包里面创建一个 pojo
public class Book {
private Integer id;
private Float price;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Float getPrice() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", price='" + price + '\'' +
'}';
}
}
创建 mapper
创建一个 mapper 包,然后在包里面创建一个 mapper
public interface BookMapper {
Book selectById(int id);
}
创建 mapper.xml 文件
在 src/main/resources 目录下,创建一个文件夹 mapping,然后创建新文件 BookMapper.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="edu.szu.test.mapper.BookMapper">
<resultMap id="BaseResultMap" type="edu.szu.test.entity.Book">
<result column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="price" jdbcType="REAL" property="price" />
</resultMap>
<select id="selectById" resultType="edu.szu.test.entity.Book">
select * from book where id = #{id}
</select>
</mapper>
创建 service
创建一个 service 包,然后在包里面创建一个 service 接口
public interface BookService {
public Book select(int id);
}
创建 serviceImpl
创建一个 serviceImpl 包,然后在包里面创建一个 service 的实现类
@Service
public class BookServiceImpl implements BookService{
@Autowired
BookMapper bookMapper;
public Book select(int id) {
return bookMapper.selectById(id);
}
}
创建控制器
创建一个 controller 包,然后在包里面创建一个 controller 的实现类
@RestController
@RequestMapping("/test")
public class BookController {
@Autowired
private BookService bookService;
@RequestMapping("getBook/{id}")
public String GetUser(@PathVariable int id){
return bookService.select(id).toString();
}
}
修改启动类
@SpringBootApplication
@MapperScan("edu.szu.test.mapper")
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
在启动类上添加一行注解 @MapperScan(“edu.szu.test.mapper”) ,表明需要扫描的 mapper 文件路径。
最后我们来测试一下吧!
在浏览器上输入 http://localhost:8080/test/getBook/1 ,结果如下
在浏览器上输入 http://localhost:8080/test/getBook/2 ,结果如下
结合我们之前创建的数据表
证明 Spring Boot 已经和 MyBatis 整合成功。
最后送上我的框架结构