MybatisPlus 快速上手 ORM介紹 ORM(Object Relational Mapping,對象關係映射)是為瞭解決面向對象與關係型資料庫存在的互不匹配的一種技術。持久化(Persistence),即把數據(如記憶體中的對象)保存到可永久保存的 存儲設備 中(如磁碟)。 ORM通過使用描 ...
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) //說明自增主鍵,添加在自增主鍵欄位上方,當再插入數據時,用戶對象就會自動帶上這個主鍵