前言
SpringBoot整合MyBatis具体步骤
总结
分享与交流
上一篇总结了SpringBoot整合Thymeleaf,它是针对于表现层–业务层来说的,一个完整的项目需要表现层–业务层–持久层,它只实现了一半。这一篇总结一下SpringBoot整合MyBatis,它是业务层–持久层。MyBatis作为一款优秀的ORM框架,对于spring来说它虽然是第三方组件,但MyBatis官方做了一个很好的接口提供给spring,使得spring整合MyBatis非常方便。
由于MyBatis是第三方组件,因此需要引入相关依赖才能在spring中使用。
(1)创建spring Boot工程,具体创建步骤可参考SpringBoot—搭建boot框架的三种方式。
(2)在pom.xml中引入相关依赖:
>
>org.springframework.boot >
>spring-boot-starter-parent >
>2.2.4.RELEASE >
> <!-- lookup parent from repository -->
>
>org.springframework.boot >
>spring-boot-starter-web >
>
>
>org.yaml >
>snakeyaml >
>1.23 >
>
>
>org.springframework.boot >
>spring-boot-starter-thymeleaf >
>
>
>org.projectlombok >
>lombok >
>1.18.8 >
>
>
>org.mybatis.spring.boot >
>mybatis-spring-boot-starter >
>1.3.1 >
>
>
>mysql >
>mysql-connector-java >
>8.0.15 >
>
(3)创建数据表
create table user(
id int primary key auto_increment,
name varchar(11),
age int
);
@Data //自动创建getter,setter,toString等方法
@AllArgsConstructor //自动创建构造函数
public class User {
private Integer id;
private String name;
private Integer age;
}
(5)创建UserRepository,定义CRUD接口。
public interface UserRepository {
public List<User> findAll();
public User findById(Integer id);
public int add(User user);
public int update(User user);
public int deleteById(Integer id);
}
(6)在/resources/mapping路径下创建UserRepository.xml,作为UserRepository的配套Mapper文件,定义每个接口方法对应的SQL语句以及结果集等。
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.4//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
>
>
>
>
insert into user(id,name,age) values(#{id},#{name},#{age})
>
>
update user set id=#{id},name=#{name},age=#{age}
>
>
delete from user where id=#{id}
>
>
(7)创建UserHandler,注入UserRepository。
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/findAll")
public List<User> findAll(){
return userRepository.findAll();
}
@GetMapping("/findById/{id}")
public User get(@PathVariable("id") Integer id){
return userRepository.findById(id);
}
@PostMapping("/add")
@ResponseBody
public int add(@RequestBody User user){
return userRepository.add(user);
}
@PostMapping("/update")
@ResponseBody
public int update(User user){
return userRepository.update(user);
}
@GetMapping("/deleteById/{id}")
public int deleteById(@PathVariable("id") Integer id){
return userRepository.deleteById(id);
}
}
(8)在/resources/static路径下创建配置文件application.yml,添加MySQL数据源信息以及MyBatis的相关配置。
#注意每个属性名和属性值之间至少一个空格,注释使用#不是//
spring:
thymeleaf:
prefix: classpath:/templates/ #前缀
suffix: .html #后缀
servlet:
content-type: text/html #在请求中,客户端告诉服务端实际请求的内容
#在响应中,服务端告诉请求端实际响应的内容
encoding: utf-8 #设置编码格式
mode: HTML #校验HTML格式
cache: false #关闭缓存,在开发过程中可立即看到修改后的结果
datasource:
url: jdbc:mysql://localhost:3306/summer03?useUnicode=true&characterEncoding=UTF-8
username: root
password:
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:/mapping/*.xml
type-aliases-package: cn.lxy.spring_boot1.entity
(9)创建启动类Application,这里需要多加一个注解,因为MyBatis是第三方组件,spring不会自动管理MyBatis相关对象的生命周期,因此需要我们自己手动配置。
@SpringBootApplication
@MapperScan("cn.lxy.spring_boot1.repository")
public class SpringBoot1Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot1Application.class, args);
}
}
@MapperScan注解的作用就是将目标包下的类全部扫描到Spring容器中。
(10)启动Application,使用Postman工具来测试相关接口,结果如图所示:
•findAll
•findById
•deleteById
•add
•update
MyBatis作为当前主流的ORM框架,成为了很多Java开发者的首选,Spring Boot很好的集成了MyBatis,开发者无需额外进行配置,开箱即用。
由于能力有限,博客总结难免有不足,还请大佬们不吝赐教