一、OEM介绍
-
ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术。
-
ORM通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中(包括了读取和存储)
-
ORM框架的本质是简化编程中操作数据库的编码。
例如:
二、MyBatis-Plus介绍
-
MyBatis是一款优秀的数据持久层ORM框架,被广泛地应用于应用系统。
-
MyBatis能够非常灵活地实现动态SQL,可以使用XML或注解来配置和映射原生信息,能够轻松地将Java的POJO(Plain Ordinary Java Object,普通的ava对象)与数据库中的表和字段进行映射关联。
【需要写很多配置】
-
MyBatis-Plus[red]是一个 MyBatis[blue]的增强工具,在 MyBatis 的基础上做了增强,简化了开发的代码。
简介 | MyBatis-Plus (baomidou.com)
(一)添加依赖(pom.xml)
<!-- MyBatisPlus依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <!-- mysql驱动依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!-- 数据连接池 druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.20</version> </dependency>
(二)全局配置
1. 配置数据库的相关信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3309/test?useSSL=false spring.datasource.username=root //数据库用户 spring.datasource.password=root //数据库密码 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl //指定日志输出的格式 server.port=8088
2. 添加@MapperScan注解(映射相关的组件放mapper包里面)
@SpringBootApplication @MapperScan("com.example.mpdemo.mapper") //mapper包在何处 public class MpdemoApplication { public static void main(String[] args) { SpringApplication.run(MpdemoApplication.class, args); } }
3.Mybatis CRUD注解
注解 | 功能 |
---|---|
@Insert | 实现插入 |
@Update | 实现更新 |
@Delete | 实现删除 |
@Select | 实现查询 |
@Result | 实现结果集封类 |
@Results | 可以与@Result一起使用,封装多个结果类 |
@One | 实现一对多集封类 |
@Many | 实现一对多结果集封类 |
(三)Mapper实现
接下里完成简单user表的增删查改的操作
1. 编写entity类user.java
package com.example.demo.entity; public class User { private int id; private String username; private String password; private String birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", birthday='" + birthday + '\'' + '}'; } }
2.编写UserMapper接口,加入一下增删查改的方法
//用于操作用户表,MyBaits会根据Mapper注解,动态实现UserMapper接口(实现类),动态代理技术
//Spring会自动创建UserMapper接口实现类对应的实例
//用于操作用户表,MyBaits会根据Mapper注解,动态实现UserMapper接口(实现类),动态代理技术 //Spring会自动创建UserMapper接口实现类对应的实例 @Mapper public interface UserMapper extends BaseMapper<User> { }
CRUD操作
UserController
package com.example.mpdemo.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.mpdemo.entity.User; import com.example.mpdemo.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @CrossOrigin public class UserContoller { @Autowired UserMapper userMapper; @GetMapping("/users") public List query(){ List<User>list= userMapper.find(); System.out.println(list); return list; } // 插入数据 @PostMapping("/user") public String save(User user){ int r= userMapper.insert(user); if(r > 0){ return "插入成功"; }else{ return "插入失败"; } } }
三、MyBatis-Plus CRUD操作
-
@TableName,当表名与实体类名称不一致时,可以使用@TableName注解进行关联。
-
@TableField,当表中字段名称与实体类属性不一致时,使用@TableField进行关联
-
@TableId,用于标记表中的主键字段,MybatisPlus也提供了主键生成策略