ORM介绍
ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术。
ORM通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中。(ORM将对象和数据库中的记录完成映射,这个映射既包含存储,又包含读取,是一种持久化技术)
ORM框架的本质的简化编程中操作数据库的编码。
MyBatis-Plus介绍
- MyBatis是一款优秀的数据持久层ORM框架,被广泛地应用于应用系统。
- MyBatis能够非常灵活地实现动态SQL,可以使用XML或者注解来配置和映射原生信息,能够轻松地将Java的POJO(Plain Ordinary Java Object,普通的Java对象)与数据库中的表和字段进行映射关联。
- MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上做了增强,简化了开发,只需做简单的配置便可以操作数据库。
MyBatis-Plus使用
添加依赖
- MyBatis-Plus实际依赖MyBatis,引入MyBatis-Plus依赖,系统会自动下载MyBatis依赖。
- 数据库操作基于mysql 5.7.31完成,首先需要安装配置mysql 5.7.31
- 操作数据库时使用连接池技术一次性生成多个连接,提高数据库连接效率。
<!-- 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>
全局配置
配置数据库相关信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
添加@MapperScan注解
在启动类添加@MapperScan注解
@SpringBootApplication
@MapperScan("com.example.mpdemo.mapper")
public class MpdemoApplication {
public static void main(String[] args) {
SpringApplication.run(MpdemoApplication.class, args);
}
}
MyBatis CRUD注解
CRUD操作
UserMapper.java
@Mapper
public interface UserMapper {
//查询所有用户
@Select("select * from user")
public List<User> find();
// @Insert("insert into user (id,username,password,birthday)")
@Insert("insert into user values(#{id},#{username},#{password},#{birthday})")
//表示插入了几条记录
public int insert(User user);
}
UserController.java
@RestController
public class UserController {
@Autowired //注入usermapper,将UserMapper实例化出的对象自动注入,就有值了
private UserMapper userMapper;
@GetMapping("/user")
// Mybatis写法
// public List query(){
// //对于springBoot项目,他会自动实例化UserMapper,管理UserMapper的实例
// List<User> list = userMapper.find();
// System.out.println(list);
// //自动返回Json
// return list;
// }
//MybatisPlus写法
public List query(){
//selectList()根据什么条件查询,没有条件则为null
List<User> list = userMapper.selectList(null);
System.out.println(list);
//自动返回Json
return list;
}
@PostMapping("/user")
public String save(User user){
//MybatisPlus写法同样可以使用insert方法,因为BaseMapper有提供insert方法
int i = userMapper.insert(user);
//后续可以添加:插入之前做校验
//如果post没有id,可以插入成功,因为数据库表设置了id字段自动递增
if(i>0){
return "插入成功";
}
else{
return "插入失败";
}
}
}
MyBatis-Plus CRUD操作
MyBatis-Plus在MyBatis基础上进一步做了简化,尤其突出在UserController,继承BaseMapper类
UserController.java
@Mapper
//mybatisplus会自动根据User类找到user表进行增、删、改、查操作,前提是类和表的名称保持一致
public interface UserMapper extends BaseMapper<User> {
}
BaseMapper类代码部分展示
BaseMapper类提供了数据库增删改查的各种操作,直接调用即可,大大简化开发。
MyBatis-Plus一些方便使用的注解
使用举例:
//如果表名和类名不一致,使用@TableName注解说明该类对应的表名
@TableName("t_user")
//表示id为主键,并且表明类型是自增“AUTO”,虽然post时没有传id,但是在插入一条user记录后能够打印出来id的值。如果不加这个注解,则打印的id值为0
@TableId(type = IdType.AUTO)
更多关于MyBatis-Plus的注解使用参考MyBatis-Plus官方文档