之三 2流高手速成记:SpringBoot整合mybatis/mybatis-plus实现数据持久化

接上回
上一篇我们简单介绍了基于SpringBoot实现简单的Web开发 , 本节来看Web开发中必不可少的内容——数据持久化
先看项目结构:

之三 2流高手速成记:SpringBoot整合mybatis/mybatis-plus实现数据持久化

文章插图
1. 创建数据表打开mysql,打开数据库 test (没有可以创建一个),创建表格 person
给 person 表创建两个字段 id、name
之三 2流高手速成记:SpringBoot整合mybatis/mybatis-plus实现数据持久化

文章插图
    
之三 2流高手速成记:SpringBoot整合mybatis/mybatis-plus实现数据持久化

文章插图
2. 打开 pom.xml , 添加相关依赖<!-- 引入mybatis、mybatis-plus、mysql等依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
mybatis-spring-boot-starter 满足了 mybatis在springboot下的拆箱即用
mybatis-plus-boot-starter 实现了 mybatis-plus 的自动化配置 , 同样拆箱即用
注意:是mybatis-plus-boot-starter,不是mybatis-plus;前者包含后者的引用,如果只引用后者执行程序会报错!
由于mybatis-plus是基于mybatis的,所以两者引用缺一不可
mysql-connector-java 是基础的mysql驱动接口,这个也是不可或缺的
mybatis是安全、优秀的java持久层框架,基于xml可灵活定制sql语句
mybatis-plus在mybatis的基础上做了更进一步的简化,可免去xml编写
同时,mybatis-plus遵循非侵入式设计的原则,即完全兼容原mybatis的使用习惯,非常方便
3. 给application.properties添加数据库配置# mysql相关设置spring.datasource.username=adminspring.datasource.password=adminspring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver到这里可能有人会问,咋没看到mybatis.xml的配置?不是一般都会有一句:
#指定Mybatis的Mapper文件mybatis.mapper-locations=classpath:mapper/*xml如果我们使用mybatis的原生功能,这一句配置是需要加上的,但是如果我们基于mybatis-plus,可以先不加这一句,因为它是免xml配置的!
4. 新建 model/Personpackage com.example.hellospringboot.model;public class Person {private Integer id = 0;private String name = "";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;}}注意:类名 Person 要和数据库表名 person 一致(首字母大写是Java的类命名规则,这个没有问题)
id和name两个字段的名称和类型也要和数据库保持一致
5. 新建 mapper/PersonMapperpackage com.example.hellospringboot.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.example.hellospringboot.model.Person;import org.apache.ibatis.annotations.Mapper;import org.springframework.stereotype.Repository;@Mapper@Repositorypublic interface PersonMapper extends BaseMapper<Person> {}这里让PersonMapper继承自mybatis-plus提供的BaseMapper,这是启用mybatis-plus免xml特性的关键!
BaseMapper为我们定制常用的数据库增删改查的方法 , 直接继承使用即可!
6. 新建 service/PersonService 接口及其实现类 service/impl/PersonServiceImplpackage com.example.hellospringboot.service;import com.example.hellospringboot.model.Person;import java.util.List;public interface PersonService {Integer insert(Person person);Integer update(Person person);Integer delete(int id);List<Person> select();}package com.example.hellospringboot.service.impl;import com.example.hellospringboot.mapper.PersonMapper;import com.example.hellospringboot.model.Person;import com.example.hellospringboot.service.PersonService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class PersonServiceImpl implements PersonService {@AutowiredPersonMapper mapper;public Integer insert(Person person){return mapper.insert(person);}public Integer update(Person person){return mapper.updateById(person);}public Integer delete(int id){return mapper.deleteById(id);}public List<Person> select(){return mapper.selectList(null);}}

推荐阅读