MyBatis是什么?MyBatis-Plus是什么?

MyBatis是什么?MyBatis-Plus是什么? MyBatis是什么一款持久层 框架持久层是什么软件分层架构中负责实现数据持久化、专门与数据库交互的层级框架是什么一套封装了底层通用逻辑、提供统一开发规范的半成品程序开发人员在这套半成品程序上继续开发自己的功能综上所述持久层框架就是负责实现数据持久化的一套半成品程序即MyBatis就是负责实现数据持久化的一套半成品程序。MyBatis框架是怎么实现的封装JDBCJDBC是什么JDBCJava Database Connectivity是 Java 官方提供的一套访问数据库的标准 API用来让 Java 程序连接数据库、执行 SQL 并处理结果。执行流程Java程序--调用JDBC--数据库驱动--数据库--查询结果--Java程序每个数据库厂商都会提供自己的数据库驱动这些驱动都实现了JDBC定义的接口从而实现了使用一套API就可以连接不同的数据库核心思想SQL与代码分离SQL抽离到独立XML文件中对象关系映射自动把查询记录映射到实体类封装底层 JDBC 冗余操作开发者只关心 SQL 和业务实体不用手动管理数据库资源面向接口编程定义 Mapper 接口不用写实现类通过动态代理自动生成接口实现业务层直接调用接口方法工作流程① Controller│② Service│③ Mapper接口│④ MyBatis找到对应SQL│⑤ JDBC执行SQL│⑥ MySQL返回结果(ResultSet)│⑦ MyBatis封装对象│⑧ 返回Mapper│⑨ 返回Service│⑩ 返回Controller如何在SpringBoot项目中使用MyBatis项目结构springboot-mybatis-demo│├── controller│ UserController.java│├── service│ UserService.java│├── mapper│ UserMapper.java│├── entity│ User.java│├── resources│ mapper│ UserMapper.xml│ application.yml│└── SpringbootApplication.java1、数据库CREATE TABLE user( id INT PRIMARY KEY, name VARCHAR(50), age INT ); INSERT INTO user VALUES(1,Tom,18);2、添加依赖dependencies !-- Spring Boot Web -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- MyBatis-Plus -- dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-spring-boot3-starter/artifactId version3.5.7/version /dependency !-- MySQL驱动 -- dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId /dependency !-- Lombok -- dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency /dependencies3、配置文件application.ymlspring: datasource: url: jdbc:mysql://localhost:3306/test username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.demo.entity4、实体类import lombok.Data; Data public class User { private Integer id; private String name; private Integer age; }实体类名 User 默认映射数据库表 user如果实体类名与数据库表名不一致的话可以使用TableName注解映射5、UserController.javaRestController RequestMapping(/user) public class UserController { Autowired private UserService userService; GetMapping(/{id}) public User getUser(PathVariable Integer id){ return userService.getUser(id); } }6、UserService.javaService public class UserService { Autowired private UserMapper userMapper; public User getUser(Integer id) { return userMapper.selectById(id); } }7、UserMapper.javaMapper public interface UserMapper { User selectById(Integer id); }8、UserMapper.xml?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.demo.mapper.UserMapper select idselectById resultTypecom.demo.entity.User select * from user where id #{id} /select /mapper注意namespacecom.demo.mapper.UserMapper必须对应Mapper接口idselectById必须对应接口的方法名9、启动类SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }MyBatis-Plus是什么MyBatis-Plus是基于MyBatis的一个增强框架最主要就是自动生成大量CRUD代码MyBatis-Plus完全兼容MyBatis如何在SpringBoot项目中使用MyBatis-Plus项目结构springboot-mybatisplus-demo│├── controller│ UserController.java│├── service│ UserService.java│├── mapper│ UserMapper.java│├── entity│ User.java│└── resources│ application.yml│└── SpringbootApplication.java对比mybatis的使用需要改动的地方有1、配置文件application.ymlspring: datasource: url: jdbc:mysql://localhost:3306/demo username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver2、UserMapper.javapackage com.example.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.entity.User; import org.apache.ibatis.annotations.Mapper; Mapper public interface UserMapper extends BaseMapperUser { }继承BaseMapper接口后就自动拥有了几十个方法比如insert()、deleteById()等3、不需要UserMapper.xml