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) //說明自增主鍵,添加在自增主鍵欄位上方,當再插入資料時,用戶物件就會自動帶上這個主鍵
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/546616.html
標籤:其他
