SpringBoot使用篇---SpringBoot整合MyBatis

SpringBoot使用篇---SpringBoot整合MyBatis_第1张图片

目录:

   前言
   SpringBoot整合MyBatis具体步骤
   总结
   分享与交流

前言

   上一篇总结了SpringBoot整合Thymeleaf,它是针对于表现层–业务层来说的,一个完整的项目需要表现层–业务层–持久层,它只实现了一半。这一篇总结一下SpringBoot整合MyBatis,它是业务层–持久层。MyBatis作为一款优秀的ORM框架,对于spring来说它虽然是第三方组件,但MyBatis官方做了一个很好的接口提供给spring,使得spring整合MyBatis非常方便。

SpringBoot整合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
);

SpringBoot使用篇---SpringBoot整合MyBatis_第2张图片
(4)创建数据表对应的实体类

@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">
>
    >
        select * from user where id=#{id};
    >

    >
        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
SpringBoot使用篇---SpringBoot整合MyBatis_第3张图片
   •findById
SpringBoot使用篇---SpringBoot整合MyBatis_第4张图片
   •deleteById
SpringBoot使用篇---SpringBoot整合MyBatis_第5张图片
SpringBoot使用篇---SpringBoot整合MyBatis_第6张图片
SpringBoot使用篇---SpringBoot整合MyBatis_第7张图片
   •add
SpringBoot使用篇---SpringBoot整合MyBatis_第8张图片
SpringBoot使用篇---SpringBoot整合MyBatis_第9张图片
SpringBoot使用篇---SpringBoot整合MyBatis_第10张图片
   •update

SpringBoot使用篇---SpringBoot整合MyBatis_第11张图片
SpringBoot使用篇---SpringBoot整合MyBatis_第12张图片
SpringBoot使用篇---SpringBoot整合MyBatis_第13张图片

总结

   MyBatis作为当前主流的ORM框架,成为了很多Java开发者的首选,Spring Boot很好的集成了MyBatis,开发者无需额外进行配置,开箱即用。

分享与交流

   由于能力有限,博客总结难免有不足,还请大佬们不吝赐教

你可能感兴趣的:(Spring,Boot)