- 官方文档注重知识结构的整理,没有注重学习者的学习顺序
- 官方文档中的案例注重API描述,比较适合学会mybatis plus之后,遇到问题再去翻阅。对于第一次使用Mybatis的初学者进行学习不是非常友好。
- 官方文档考虑的是全面完整的介绍Mybatis Plus, 我考虑的角度是:“最佳实践”。
- 世界上很多东西都符合2/8原则,本文档的目的是将:最重要最常用的那20%帮你提炼出来、快速上手应用!。另外的那80%都是不常用的,有空自己再去官方文档里面学吧!
官网文档地址:https://mybatis.plus/guide/
我会将此文档写成一个系列的内容,记得关注我!zimug.com
我会将此文档写成一个系列的内容,记得关注我!zimug.com
我会将此文档写成一个系列的内容,记得关注我!zimug.com
通过maven坐标引入依赖
com.baomidou mybatis-plus-boot-starter3.1.2 mysql mysql-connector-javaruntime org.projectlombok lomboktrue
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三、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.根据条件删除记录
//构造条件 Mapmap = 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批量查找数据
Listids = Arrays.asList( 1087982257332887553L, 1094590409767661570L, 1094592041087729666L ); List list = userMapper.selectBatchIds(ids); list.forEach(System.out::println);
SELECT id,name,age,email FROM user WHERe id IN ( ? , ? , ? )3.6.根据指定参数查询
Mapmap = new HashMap<>(); //map的key指代的是mysql表中的列名,并非java实体的属性名 map.put("name", "Jone"); List list = userMapper.selectByMap(map); list.forEach(System.out::println);
SELECT id,name,age,email FROM user WHERe name = ?3.7.指定查询结果字段
QueryWrapperquery = new QueryWrapper<>(); query.select("name", "age") //指定查询结果字段 .in("age", Arrays.asList(30, 31, 34, 35)) .last("limit 1"); List list = userMapper.selectList(query); list.forEach(System.out::println);
SELECT name,age FROM user WHERe age IN (?,?,?,?) LIMIT 1
QueryWrapperquery = new QueryWrapper<>(); query.like("name", "J%") //like是MP的条件构造器,表示"模糊查询" .lt("age", 40) //lt是MP的条件构造器,表示"小于"关系 .select("name", "age"); List
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("hadoopcn2@163.com");
int rows = userMapper.updateById(user);
System.out.println("影响记录数:" + rows);
UPDATE user SET age=?, email=? WHERe id=?3.9.根据UpdateWrapper自定义条件修改数据
UpdateWrapperupdate = new UpdateWrapper<>(); update.eq("name", "Jack").eq("age", 28); //eq是MP的条件构造器,表示"等于"关系 User user = new User(); user.setAge(29); user.setEmail("hadoopcn2@163.com"); 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, 'test1@baomidou.com'), (2, 'Jack', 20, 'test2@baomidou.com'), (3, 'Tom', 28, 'test3@baomidou.com'), (4, 'Sandy', 21, 'test4@baomidou.com'), (5, 'Billie', 24, 'test5@baomidou.com');欢迎关注我的博客,里面有很多精品合集
- 本文转载注明出处(必须带连接,不能只转文字):字母哥博客。



