MyBatisPlus入門實(shí)戰(zhàn)(SpringBoot)
一不撑、概述
Mybatis是一個(gè)很火的輕量級(jí)的持久層框架。通常需要寫xml文件惊豺,編寫SQL就可方便的去操作數(shù)據(jù)庫燎孟。對(duì)于操作數(shù)據(jù)庫的工具來說很是靈活,這里不過多贅述了尸昧。
Mybatis-Plus(簡(jiǎn)稱MP)是Mybatis的增強(qiáng)工具揩页,對(duì)Mybatis只做增強(qiáng)不做修改。有更高的效率。
內(nèi)部有封裝常用的CURD操作爆侣,可達(dá)到調(diào)用方法操作數(shù)據(jù)庫萍程,而無需寫SQL語句。
下面就是實(shí)戰(zhàn)去體驗(yàn)Plus的對(duì)于單表CRUD的高效兔仰。
二茫负、實(shí)戰(zhàn)使用
1、環(huán)境
- SpringBoot
- Mysql
- MybatisPlus
2乎赴、數(shù)據(jù)&代碼說明
創(chuàng)建一個(gè)名為user的數(shù)據(jù)庫:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`age` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`own_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'JoJo', '23', '1215135@jojo.com');
INSERT INTO `user` VALUES (2, 'kit', '22', '63362@kit.com');
INSERT INTO `user` VALUES (23, 'bii', '22', '354643@bii.com');
SET FOREIGN_KEY_CHECKS = 1;
3忍法、實(shí)戰(zhàn)運(yùn)行
1-導(dǎo)入依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
2-配置數(shù)據(jù)庫
# 配置數(shù)據(jù)源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
name: root
password: 12345
url: jdbc:mysql:///test
3-編寫對(duì)應(yīng)數(shù)據(jù)庫的實(shí)體類User
@Data
@TableName("user") // 表名的映射
public class UserPO {
// 指定id,id的類型
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
// 指定字段名的映射
@TableField("name")
private String name;
// 指定字段名的映射
@TableField("age")
private String age;
// 指定字段名的映射
@TableField("own_email")
private String Email;
}
實(shí)體類使用了lombok簡(jiǎn)化書寫
4-編寫Mapper
/**
* @author Hacah
* @date 2021/5/19 10:00
*/
public interface UserMapper extends BaseMapper<UserPO> {
}
繼承Mybatis-Plus的BaseMapper
5-編寫測(cè)試代碼
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
List<UserPO> userPOS = userMapper.selectList(null);
System.out.println(userPOS);
}
結(jié)果:
[UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com), UserPO(id=2, name=kit, age=22, Email=63362@kit.com)]
4榕吼、CRUD的操作方法介紹
1-查詢
查詢一條:
1.slelectByOne
通過id查詢一條數(shù)據(jù)饿序。
// 1.查詢一個(gè)
UserPO userPO = userMapper.selectById(1);
System.out.println(userPO);
結(jié)果:
UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com)
2.selectOne
通過條件查詢一條數(shù)據(jù),若查詢條數(shù)多于1條會(huì)報(bào)錯(cuò)羹蚣。
// 2.使用條件查詢一個(gè)
QueryWrapper<UserPO> userPOQueryWrapper = new QueryWrapper<>();
userPOQueryWrapper.eq("age", "22"); // SQL上增加age = 22條件
System.out.println(userMapper.selectOne(userPOQueryWrapper));
// SELECT id,name,age,own_email AS Email FROM user WHERE age = 22;
QueryWrapper類能夠構(gòu)造查詢的條件
QueryWrapper
這是拼接條件的類原探,傳入該類可以構(gòu)造sql的操作的條件
比如or、and顽素、= 咽弦、between... in..等等
查詢多條
1.selectByMap
通過Map查詢多條數(shù)據(jù)。
// 3.使用map查詢多條數(shù)據(jù)
HashMap<String, Object> stringObjectHashMap = new HashMap<>();
stringObjectHashMap.put("age", 22);
System.out.println(userMapper.selectByMap(stringObjectHashMap));
結(jié)果:
[UserPO(id=2, name=kit, age=22, Email=63362@kit.com),
UserPO(id=3, name=bii, age=22, Email=354643@bii.com)]
2.selectBatchIds
通過id進(jìn)行批量查詢
// 4.使用個(gè)id查詢更多數(shù)據(jù)
ArrayList<Integer> userPOS = new ArrayList<>();
userPOS.add(1);
userPOS.add(2);
System.out.println(userMapper.selectBatchIds(userPOS));
結(jié)果:
[UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com),
UserPO(id=2, name=kit, age=22, Email=63362@kit.com)]
2-新增
1.update
傳入一個(gè)實(shí)體類新增一條數(shù)據(jù)
// 5. 新增數(shù)據(jù)
UserPO userPO = new UserPO();
userPO.setAge("12");
userPO.setName("fibs");
userPO.setEmail("5332633@fibs.com");
userMapper.insert(userPO);
結(jié)果:
3-修改
1.updateById
通過id更新胁出,傳入一個(gè)實(shí)體類
// 6.修改數(shù)據(jù)
UserPO userPO = new UserPO();
userPO.setId(1);
userPO.setAge("31");
userMapper.updateById(userPO);
結(jié)果:
2.update
傳入一個(gè) 實(shí)體類 和 條件類型型,更新數(shù)據(jù)
// 6.通過條件修改數(shù)據(jù)
UserPO userPO = new UserPO();
userPO.setAge("31");
QueryWrapper<UserPO> userPOQueryWrapper = new QueryWrapper<>();
userPOQueryWrapper.isNotNull("age"); // 構(gòu)造條件where age != null
userMapper.update(userPO,userPOQueryWrapper);
結(jié)果:
age不為null的全部修改成31
4-刪除
刪除和select類似,有一下方法:
deleteById 通過id刪除
deleteByMap 使用map刪除
delete 通過條件刪除
deleteBatchIds 通過id批量刪除
這里只演示delete全蝶,使用條件刪除數(shù)據(jù)
刪除id小于等于1的數(shù)據(jù)
userMapper.delete(new QueryWrapper<UserPO>().le("id",1));
結(jié)果:
三输莺、總結(jié)
本博客是一個(gè)入門的描述。先大概了解MybatisPlus的增強(qiáng)之處裸诽,并通過實(shí)踐去體會(huì),去認(rèn)證它的運(yùn)行結(jié)果型凳。讓我們對(duì)此生映像丈冬,以便后續(xù)的使用,解決我們后續(xù)遇到的問題就是我們一直學(xué)習(xí)的目的甘畅。