一、MyBatis-Plus概述
官网: baomidou.com
MyBatis-Plus(简称 MP) 在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
(1)单表操作
不需要编写sql语句,封装方法,使用封装的这些方法方便实现
(2)复杂查询或者多表查询
仍需编写SQL语句实现
(3)大致步骤
①创建数据库、创建表、添加记录
②创建SpringBoot工程,引入MP相关依赖
<!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency>
③SpringBoot创建配置文件,指定操作数据库路径
#mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
④创建SpringBoot工程启动类
⑤创建操作表对应实体类
⑥创建Mapper,继承BaseMapper,指定对应实体类
二、CRUD
(1)在官网可查注解用法,以下列举常用注解:
① @TableName(" "):相同时可不写
② @TableId主键策略
③ @TableField(" ")
(2)单表操作时使用baseMapper已封装好的方法进行crud
CRUD:
@SpringBootTest
public class MpDemo1 {//注入mapper@Autowiredprivate UserMapper userMapper;//1 查询所有记录 selectList@Testpublic void findAll() {List<User> list = userMapper.selectList(null);list.forEach(user->{System.out.println(user.getName()+":"+user.getAge());});}//2 添加操作insert@Testpublic void addUser() {//创建对象,设置值User user = new User();user.setName("东方不败");user.setAge(30);user.setEmail("dfbb@atguigu.com");//调用方法int rows = userMapper.insert(user);System.out.println(rows);System.out.println(user);}//3 根据id查询@Testpublic void getUserById() {User user = userMapper.selectById(1L);System.out.println(user);}//4 修改操作@Testpublic void updateUser() {//根据id查询User user = userMapper.selectById(1L);//设置修改值user.setName("岳不群");user.setAge(50);//调用方法完成修改int rows = userMapper.updateById(user);System.out.println(rows);}//5 删除操作@Testpublic void deleteUser() {userMapper.deleteById(2L);}//6 条件查询}
删除操作:
条件查询:
//select * from user where name=? and age=?
@Test
public void select1() {//封装条件对象LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.eq(User::getName,"Tom");wrapper.eq(User::getAge,28);//调用方法List<User> list = userMapper.selectList(wrapper);list.forEach(user->{System.out.println(user.getName()+":"+user.getAge());});
}//select * from user where age>=28
@Test
public void select2() {LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.ge(User::getAge,28);//调用方法List<User> list = userMapper.selectList(wrapper);list.forEach(user->{System.out.println(user.getName()+":"+user.getAge());});
}//select * from user name like ?
@Test
public void select3() {LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.like(User::getName,"m");//调用方法List<User> list = userMapper.selectList(wrapper);list.forEach(user->{System.out.println(user.getName()+":"+user.getAge());});
}
三、主键策略
默认策略:都是数字
uuid值:数字和字母