MybatisPlus 快速上手
MybatisPlus 快速上手
ORM介绍
- ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象与关系型数据库存在的互不匹配的一种技术。持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的 存储设备 中(如磁盘)。
- ORM通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中。
- ORM框架的本质是简化编程中操作数据库的代码。
Mybatis-Plus介绍
- Mybatis是一款优秀的数据持久层ORM框架,被广泛地应用于应用系统。
- Mybatis能够非常灵活地实现动态SQL,可以使用XML或注解来配置和映射原生信息,能够轻松地将Java的POJO(Plain Ordinary Java Object,普通的Java对象)与数据库中的表和字段进行映射关联。
- Mybatis-Plus是一个Mybatis的增强工具,在Mybatis的基础上做了增强,简化了开发
Mybatis使用
- 添加依赖(Mybatis-plus依赖了Mybatis)
<!-- mybatis-plus 依赖 -->
<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注解(这是扫描器),用于指定Mapper包的地址,加在Application启动类中
@SpringBootApplication
@MapperScan("com.pikaqiu.mp_demo.mapper") // 这个是全包名,直接复制比较好,在Mapper包下右键点击Copy Path...--->6.Copy Reference即可
public class MpDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MpDemoApplication.class, args);
}
}
- Mybatis CRUD注解
注解 | 功能 |
---|---|
@Insert | 实现插入 |
@Update | 实现更新 |
@Delete | 实现删除 |
@Select | 实现查询 |
@Result | 实现结果集封装 |
@Results | 可以与@Result一起使用,封装多个结果集 |
@One | 实现一对一结果集映射 |
@Many | 实现一对多结果集封装 |
-
CRUD操作
编写UserMapper接口,加入增删改查方法声明,至于实现由Mybatis自动完成。
@Mapper //表明这是一个Mapper组件
public interface UserMapper {
//查询所有用户 让方法生效要用@Select注解,注解里面写sql语句
@Select("select * from user")
public List<User> find();
}
控制器实现:创建UserController控制器,在控制器中注入UserMapper实例,注意:一定要添加@MapperScan注解,否则无法注入mapper实例!!!
@RestController
public class UserController {
@Autowired //实现对象注入,然后下面就可以调用userMapper.find()了
private UserMapper userMapper;
@GetMapping("/user")
public List query(){
List<User> list = userMapper.find();
System.out.println(list);
return list;
}
}
!!在insert操作中遇到的小问题:
注意insert的sql语句里面的valus里面的每个参数位置要与数据库的位置一致,前后顺序要一样:
比如:数据库里面的表的字段顺序:
那么sql语句的写法要像这样:
@Insert("insert into user values(#{username}, #{password}, #{birthday}, #{id})")
public int insert(User user);//方法的返回值代表插入了几条记录,如果失败,则返回值为0
Mybatis-Plus使用
Mybatis-plus对单表操作在Mybatis的基础上做了简化,一些增删改查可以这样来完成:
让UserMapper接口继承BaseMapper类,这个类是Mybatis-plus提供的
Mybatis-plus官网:简介 | MyBatis-Plus (baomidou.com)
package com.pikaqiu.mp_demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper //表明这是一个Mapper组件
public interface UserMapper extends BaseMapper<User> {//告诉Mybatis-plus要操作User类
/*//查询所有用户 让方法生效要用@Select注解,注解里面写sql语句
@Select("select * from user")
public List<User> find();
@Insert("insert into user values(#{username}, #{password}, #{birthday}, #{id})")
public int insert(User user);//方法的返回值代表插入了几条记录,如果失败,则返回值为0*/
}
- Mybatis一些注解的作用
- @TableName("tablename") //当数据库表名与实体类名不一致时,可以用这个注解来告诉实体类对应哪个表。此注解加在实体类上方。
- @TableId(type = IdType.AUTO) //说明自增主键,添加在自增主键字段上方,当再插入数据时,用户对象就会自动带上这个主键