MyBatis-Plus入门
前言:今天喵小奇给的音乐软件出bug了,只能原地循环一首歌,不能自动播下一曲,改明得自己去重新编译一遍。顺带先去问问他这是什么情况。
今天的曲是松本梨香的XY&Z,阿姨的宝可梦曲是真好听,比博燃,有节奏感。
官网:
https://baomidou.com/
有中文,说明不是什么特别难的东西,用多少查多少也没什么问题。
和同学一聊才知道这玩意干脆就是国人写的。
有一大堆优势,总结起来就是方便,硬要说缺点的话就是要一点性能。
plus没有改变原本的代码,只是增强,说明原本我要写的的代码是不用改的。
按照快速开始给的说法,只需要在原本的工程中加入MP,就可以纵享丝滑。
先说一句我选的是Spring Boot+Mybatis+MybatisPlus
首先建库
按照最基础的demo方案,建一个user表:
id | name | age | remarks |
---|---|---|---|
1 | zxc | 14 | asfdyhrthqaejratiatrj |
2 | asd | 11 | 4164684534+8 |
3 | qwe | 13 | hfgdd687fhd465hdf65 |
4 | dfg | 12 | h5df7ah5r4dy4re |
5 | cvb | 15 | 231er56gd876gdx |
(ps:1,name是随手按的,功能上能用就可以。2,age也是随手按的不要问我为什么都是未成年。3,remarks同理)
这里贴出数据语句:
INSERT INTO user (id, name, age, remarks) VALUES
(1,'zxc',14,'asfdyhrthqaejratiatrj'),
(2,'asd',11,'4164684534+8'),
(3,'qwe',13,'hfgdd687fhd465hdf65'),
(4,'dfg',12,'h5df7ah5r4dy4re'),
(5,'cvb',15,'231er56gd876gdx');
我的库名字叫db_MP,按个人口味酌情修改。
初始化一个Spring Boot工程
官网原文里甚至给了友情链接,快速初始化工程,这里虽然不用但也贴出来,衷心感谢:https://start.spring.io/
Spring Boot工程直接使用快速创建的版本做为demo,至于这玩意本体以后再单写。
默认
改改名字和jdk版本下一步。
我没选,以后再说。
开个新文件夹。
nice!创建失败!
重来一下,这回勾上这个。
这回成了,刚刚是断网了,wifi突然断开,缘分问题没办法。这里本来弹了两个窗口叫我下东西的手快点了一个才想起截图,这里郑重的说一下,全选同意。
出了个下不了的错,应该是我网络的问题,先不管他,以后在去下(回头就忘)
完成,建个controller测试一下,这里我是测试过的,不写上来了,第一次写spring boot的朋友需要测试一下,不费事的。
引入MyBatis Plus
Spring Boot Starter 父工程,代码在pom里,右下角可能会弹下载框,点自动下载。(全都下了就完事了,错了大不了重来,“硬试教育”。)
引入 spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter依赖,官方教程用的数据库是h2,而我是mysql,所以也要改一下,这里报红仍然是网络问题,不急等着吧。
application.yml得自己建,亏我找了半天这玩意在哪。
server:
port: 8088
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/demodb
username: root
password: x5
这个配置都成型了随便一搜就有,记得要对应自己的数据库和用户名密码。
编写User类并get set,记得建实体类文件夹。
UserMapper.interface,里边继承MP的BaseMapper
这里发现这个继承始终失败,这里研究了一下
这里这个版本得确定一个版本,而不是写Latest Version,我现场查了一下,本来应该是可以写最新版本的,,这样就可以自动获取,但是可能是最近版本正在更新,所以不指定一个版本的话,就无法加载这个依赖。
在 Spring Boot 启动类中加一个 @MapperScan 注解,让它扫描 Mapper 文件夹。
右键run执行,控制台出结果:
我的这个类其实不叫SpringbootMybatisPlusApplication,找一找@SpringBootApplication这个注解就能知道了(这一条给连文件在哪都不知道的新手(几分钟前的我))
到这个地方写个功能测试类。
代码:
package com.mpdemo.demo;
import com.mpdemo.pojo.User;
import com.mpdemo.pojo.UserMapper;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SampleTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
}
}
功能测试出问题了,明天再改吧,看下表睡了。
艹三点四十,赶紧睡。
早上八点,室友上课我又醒了,算了,先整整看能不能弄好吧。
说是数据库出了问题。链接不上。
终于找了同学看了两分钟解决了,数据库的位置不对,改成这样:
上文的代码已经改好,可以安心复制。
控制台输出这一堆东西,不报错,就算完成。
参考
要感谢一大堆参考文档,直接贴网址了。
https://www.jianshu.com/p/e2dcae4add76
https://www.bilibili.com/video/BV1yA411t782?p=2
https://www.jianshu.com/p/b79a8ec049be
https://blog.csdn.net/tenghu8888/article/details/78754094
https://www.jianshu.com/p/414ef5b49a69
https://www.cnblogs.com/zwb-19981125/p/13213008.html
https://www.cnblogs.com/huangsxj/p/7728123.html
https://www.cnblogs.com/qingmuchuanqi48/p/11886618.html
有遗漏,找不到记录了。