Mybatis Plus官方檔案已經很完善了,為什么還要寫一個這樣的檔案?
- 官方檔案注重知識結構的整理,沒有注重學習者的學習順序
- 官方檔案中的案例注重API描述,比較適合學會mybatis plus之后,遇到問題再去翻閱,對于第一次使用Mybatis的初學者進行學習不是非常友好,
- 官方檔案考慮的是全面完整的介紹Mybatis Plus, 我考慮的角度是:“最佳實踐”,
- 世界上很多東西都符合2/8原則,本檔案的目的是將:最重要最常用的那20%幫你提煉出來、快速上手應用!,另外的那80%都是不常用的,有空自己再去官方檔案里面學吧!
官網檔案地址:https://mybatis.plus/guide/

我會將此檔案寫成一個系列的內容,記得關注我!zimug.com
我會將此檔案寫成一個系列的內容,記得關注我!zimug.com
我會將此檔案寫成一個系列的內容,記得關注我!zimug.com
一、Spring Boot整合Mybatis Plus
通過maven坐標引入依賴
<!-- mybatis -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
application配置資料源及日志輸出級別
# 配置資料源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: test
password: <填上資料庫訪問密碼>
# 配置日志
logging:
level:
root: warn
com.zimug.boot.launch.mapper: trace
第三步:配置Mybatis的Mapper類檔案的包掃描路徑
@SpringBootApplication
@MapperScan(basePackages = {"com.zimug.boot.launch.mapper"})
public class BootLaunchApplication {
public static void main(String[] args) {
SpringApplication.run(BootLaunchApplication.class, args);
}
}
二、編碼構建物體和Mapper
撰寫物體類User.java,對應的資料庫表創建SQL在文末,
@Data //lombok注解
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
撰寫Mapper類UserMapper.java
public interface UserMapper extends BaseMapper<User> {
}
三、CRUD基礎使用案例
3.1.增加一條記錄
User user = new User();
user.setName("字母哥");
user.setAge(18);
int row = userMapper.insert(user);
System.out.println("影響記錄數:"+row);
System.out.println("雪花演算法id: "+user.getId());
寫了上面的java代碼,MP將會自動的根據java代碼構造下面的SQL去資料庫執行,注意:主鍵默認采用雪花演算法
# 主鍵自動填充了雪花演算法
INSERT INTO user ( id, name, age)
VALUES ( ?, ?, ? )
3.2.根據主鍵洗掉一條記錄
int rows = userMapper.deleteById(1170243901535006722L);
System.out.println("影響記錄數:" + rows);
1170243901535006722L是資料插入的時候根據雪花演算法生成的id
DELETE FROM user
WHERE id=?
3.3.根據條件洗掉記錄
//構造條件
Map<String,Object> map = new HashMap<>();
map.put("name","字母哥");
map.put("age",18);
//執行洗掉
int rows = userMapper.deleteByMap(map);
System.out.println("影響記錄數:" + rows);
DELETE FROM user
WHERE name = ?
AND age = ?
3.4.根據主鍵查詢一條資料
User user = userMapper.selectById(1089911557332887553L);
System.out.println(user);
SELECT id,name,age,email
FROM user
WHERE id=?
3.5.根據ids批量查找資料
List<Long> ids = Arrays.asList(
1087982257332887553L,
1094590409767661570L,
1094592041087729666L
);
List<User> list = userMapper.selectBatchIds(ids);
list.forEach(System.out::println);
SELECT id,name,age,email
FROM user
WHERE id IN ( ? , ? , ? )
3.6.根據指定引數查詢
Map<String, Object> map = new HashMap<>();
//map的key指代的是mysql表中的列名,并非java物體的屬性名
map.put("name", "Jone");
List<User> list = userMapper.selectByMap(map);
list.forEach(System.out::println);
SELECT id,name,age,email
FROM user
WHERE name = ?
3.7.指定查詢結果欄位
QueryWrapper<User> query = new QueryWrapper<>();
query.select("name", "age") //指定查詢結果欄位
.in("age", Arrays.asList(30, 31, 34, 35))
.last("limit 1");
List<User> list = userMapper.selectList(query);
list.forEach(System.out::println);
SELECT name,age
FROM user
WHERE age IN (?,?,?,?)
LIMIT 1
QueryWrapper<User> query = new QueryWrapper<>();
query.like("name", "J%") //like是MP的條件構造器,表示"模糊查詢"
.lt("age", 40) //lt是MP的條件構造器,表示"小于"關系
.select("name", "age");
List<Map<String, Object>> maps = userMapper.selectMaps(query);
maps.forEach(System.out::println);
SELECT name,age
FROM user
WHERE name LIKE ?
AND age < ?
3.8.通過主鍵id修改資料
User user = new User();
user.setId(1088248199570832385L);
user.setAge(18);
user.setEmail("[email protected]");
int rows = userMapper.updateById(user);
System.out.println("影響記錄數:" + rows);
UPDATE user
SET age=?, email=?
WHERE id=?
3.9.根據UpdateWrapper自定義條件修改資料
UpdateWrapper<User> update = new UpdateWrapper<>();
update.eq("name", "Jack").eq("age", 28); //eq是MP的條件構造器,表示"等于"關系
User user = new User();
user.setAge(29);
user.setEmail("[email protected]");
int rows = userMapper.update(user, update);
System.out.println("影響記錄數:" + rows);
UPDATE user
SET age=?, email=?
WHERE name = ?
AND age = ?
附錄---測驗SQL:
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主鍵ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年齡',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
PRIMARY KEY (id)
);
其對應的資料庫 Data 腳本如下:
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');
歡迎關注我的博客,里面有很多精品合集
- 本文轉載注明出處(必須帶連接,不能只轉文字):字母哥博客,
覺得對您有幫助的話,幫我點贊、分享!您的支持是我不竭的創作動力! ,另外,筆者最近一段時間輸出了如下的精品內容,期待您的關注,
- 《手摸手教你學Spring Boot2.0》
- 《Spring Security-JWT-OAuth2一本通》
- 《實戰前后端分離RBAC權限管理系統》
- 《實戰SpringCloud微服務從青銅到王者》
- 《VUE深入淺出系列》
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/151702.html
標籤:Java
上一篇:c++黑框程式加背景音樂!!!蒟蒻求大佬指教啊!!!
下一篇:for回圈遍歷的盜版筆記
