Spring Boot 整合持久层之MyBatis

整合MyBatis

MyBatis 是一款优秀的持久层框架,原名 iBatis ,2010年迁移到 Goole Code 并改名为 MyBatis ,2013年迁移到 GitHub 上。MyBatis 支持定制化 SQL 、存储过程及高级映射。MyBatis 几乎避免了所有的 JDBC 代码手动设置参数以及获取结果集。在传统的 SSM 框架整合中,使用 MyBatis 需要大量的 XML 配置,而在 Spring Boot 中,MyBatis 提供了一套自动化配置方案,可以做到 MyBatis 开箱即用。

Spring Boot 整合持久层之MyBatis_第1张图片

1. 创建项目

创建 Spring Boot 项目,添加 MyBatis 依赖、数据库驱动依赖以及数据库连接池依赖,如下:


  org.springframework.boot
  spring-boot-starter-web
  
    
    
      com.fasterxml.jackson.core
      jackson-databind
    
  



  com.alibaba
  fastjson
  1.2.78


  org.mybatis.spring.boot
  mybatis-spring-boot-starter
  1.3.2


  com.alibaba
  druid
  1.1.9


  mysql
  mysql-connector-java
  runtime

2. 创表实体类等

CREATE TABLE `book` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(128) DEFAULT NULL,
  `author` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

实体类 Book

public class Book {
    private Integer id;
    private String name;
    private String author;
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                '}';
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
}

数据库连接配置 application.properties

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/weirdo?useUnicode=true&characterEncoding=utf8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root

3. 创建数据库访问层

创建 BookMapper

传送门

@Mapper
public interface BookMapper {
    int addBook(Book book);
    int deleteBookById(Integer id);
    int updateBookById(Book book);
    Book getBookById(Integer id);
    List getAllBooks();
}

代码解释:

  • 在项目的根包下面创建一个子包 Mapper ,在 Mapper 中创建 BookMapper
  • 有两种方式指明该类是一个 Mapper:第一种如前面的代码所示,在 BookMapper 上添加 @Mapper 注解,表名该接口是一个 MyBatis 中的 Mapper ,这种方式需要在每一个 Mapper 上都添加注解;还有一种简单的方式是在配置类上添加@MapperScan(“com.sang.mapper”) 注解,表示扫描 com.sang.mapper 包下的所有接口作为 Mapper ,这样就不需要在每个接口上配置 @Mapper 注解了

4. 创建 BookMapper.xml



    
    INSERT INTO book(name,author) VALUES (#{name},#{author})
    
    
        DELETE FROM book WHERE id=#{id}
    
    
        UPDATE book set name=#{name},author=#{author} WHERE id=#{id}
    
    
    

代码解释:

  • 针对 BookMapper 接口中的每一个方法都在 BookMapper.xml 中列出了实现
  • #{} 用来代替接口中的参数,实体类中的属性可以直接通过 #{实体类属性名} 获取

5. 创建Service和BookController

@Service
public class BookService {
    @Autowired
    BookMapper bookMapper;
    public int addBook(Book book) {
        return bookMapper.addBook(book);
    }
    public int updateBook(Book book) {
        return bookMapper.updateBookById(book);
    }
    public int deleteBookById(Integer id) {
        return bookMapper.deleteBookById(id);
    }
    public Book getBookById(Integer id) {
        return bookMapper.getBookById(id);
    }
    public List getAllBooks() {
        return bookMapper.getAllBooks();
    }
}
@RestController
public class BookController {
    @Autowired
    BookService bookService;
    @GetMapping("/bookOps")
    public void bookOps() {
        Book b1 = new Book();
        b1.setName("西厢记");
        b1.setAuthor("王实甫");
        int i = bookService.addBook(b1);
        System.out.println("addBook>>>" + i);
        Book b2 = new Book();
        b2.setId(1);
        b2.setName("朝花夕拾");
        b2.setAuthor("鲁迅");
        int updateBook = bookService.updateBook(b2);
        System.out.println("updateBook>>>"+ JSON.toJSONString(updateBook));
        Book b3 = bookService.getBookById(1);
        System.out.println("getBookById>>>"+JSON.toJSONString(b3));
        int delete = bookService.deleteBookById(2);
        System.out.println("deleteBookById>>>"+ JSON.toJSONString(delete));
        List allBooks = bookService.getAllBooks();
        System.out.println("getAllBooks>>>"+JSON.toJSONString(allBooks));
    }
}

6. 配置 pom.xml 文件

在 Maven 工程中,XML 配置文件建议写在 resources 目录下,但是上文的 Mapper.xml 文件写在包下,Maven 在运行时会忽略包下的 XML 文件,因此需要在 pom.xml 文件中重新指明资源文件位置,配置如下:


  
    
      src/main/java
      
        **/*.xml
      
    
    
      src/main/resources
    
  

在浏览器中数据 http://localhost:8081/bookOps 查看日志:

addBook>>>1
updateBook>>>1
getBookById>>>{"author":"鲁迅","id":1,"name":"朝花夕拾"}
deleteBookById>>>0
getAllBooks>>>[{"author":"鲁迅","id":1,"name":"朝花夕拾"},{"author":"王实甫","id":3,"name":"西厢记"},{"author":"王实甫","id":4,"name":"西厢记"}]

到此这篇关于Spring Boot 整合持久层之MyBatis的文章就介绍到这了,更多相关Spring Boot MyBatis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Spring Boot 整合持久层之MyBatis)