MybatisPlus学习笔记(一)之基本使用


简单介绍

MybatisPlus是一个Mybatis的整强工具包。

代码

#创建库
create database mp;
use mp;
#使用表
create table mp(
id int primary key auto_increment,
last_name varchar(50),
email varchar(50),
gender char(1),
age int
);
insert into mp(last_name, email, gender, age) values ('Tom','tom@163.com',1,1);
insert into mp(last_name, email, gender, age) values ('Jerry','Jerry@163.com',1,1);
insert into mp(last_name, email, gender, age) values ('Black','Black@163.com',1,1);
insert into mp(last_name, email, gender, age) values ('White','White@163.com',1,1);
select * from mp;

 pom.xml依赖引入

        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.5.1
        

org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-logging



mysql mysql-connector-java

 application.yml

server:
    port: 7000
spring:
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        password: root
        url: jdbc:mysql://127.0.0.1:3306/mp?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
        username: root
mybatis-plus:
#type-aliases-package: com.monster.demo.entity
global-config:
db-config:
id-type: assign_uuid # 鼠标放在id-type上面显示的解释如下图。

统一CURD的使用

Mapper包XxxMapper.java

/*
* Mapper接口
* 基于Mybatis: 在Mapper接口中编写CRUD相关的方法,提供Mapper接口对应的SQL映射文件以及方法对应的SQL语句
*
* 基于MP: 让XxxMapper接口继承BaseMapper接口即可
* BaseMapper:泛型指定的就是当前Mapper接口所操作的实体类类型
* */
@Mapper
public interface MpMapper extends BaseMapper {
}

实体类Employee层

/*
* 实体类
* MybatisPlus会默认使用实体类的类名到数据库中找对应的表
* */
@Data
@TableName("mp")
public class MpEmployee {
/*
* @TableId
* value: 指定表中的主键列的列明,入股实体属性名与列名一致,可以省略不指定
* type: 指定主键策略
* */
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
  @TableField(value = "last_name")
  private String lastName;
    private String email;
private Integer gender;
private Integer age;

}

Test测试

@SpringBootTest
@Slf4j
class MybatisplusApplicationTests {
@Autowired
private MpMapper mapper;
/*
插入
*/
@Test
void contextLoads() {
//初始化Employee对象
MpEmployee employee = new MpEmployee();
employee.setLastName("张三");
employee.setEmail("张三@163.com");
employee.setGender(1);
employee.setAge(22);
employee.setSalary(20000.0);
//插入到数据库
int insert = mapper.insert(employee);
log.info("insert"+insert);

//获取当前数据在数据库中的主键值
Integer key = employee.getId();
System.out.println("key"+key);
}
}

 修改操作测试总结

/*根据id修改*/
@Test
void testUpload(){
    //初始化Employee对象
    MpEmployee employee = new MpEmployee();
    employee.setId(1);
    employee.setLastName("萧瑟");
    employee.setEmail("xiao@163.com");
    employee.setGender(0);
    employee.setAge(44);
    int result = mapper.updateById(employee);
    System.out.println("修改成功:"+result);
}

//根据条件更新修改
@Test
void testUpdate(){
MpEmployee employee = new MpEmployee();
employee.setGender(0);
employee.setAge(20);
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("last_name","张三");
//根据条件做更新匹配lastName="张三"
int update = mapper.update(employee, wrapper);
System.out.println("修改成功:"+update);
}

//根据多个条件更新修改
@Test
void testUpdate(){
MpEmployee employee = new MpEmployee();
employee.setEmail("cs@163.com");
employee.setSalary(10.0);
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("gender",0).eq("age",20);
//根据条件做更新匹配lastName="张三"
int update = mapper.update(employee, wrapper);
System.out.println("修改成功:"+update);
}
 

 删除操作

   /*
    * 根据ID删除
    * */
    @Test
    void deleteTest(){
        int delete = this.mapper.deleteById(7L);
        System.out.println("删除成功:"+delete);
    }

/*
根据map删除数据,多条件之间是and关系
*/
@Test
void testDeleteByMap(){
HashMap map = new HashMap<>();
map.put("last_name","张三");
map.put("age",20);
int delete = this.mapper.deleteByMap(map);
System.out.println("删除成功:"+delete);
}
 /*
删除方法
*/
   @Test
void testDelete(){

//用法一
// QueryWrapper wrapper = new QueryWrapper<>();
// wrapper.eq("last_name","张三")
// .eq("age",22);
//用法二
MpEmployee employee = new MpEmployee();
employee.setLastName("张三");
employee.setAge(20);
QueryWrapper wrapper = new QueryWrapper<>(employee);


//根据包装条件做条件
int delete = this.mapper.delete(wrapper);
System.out.println("删除成功:"+delete);
}
 
/*
* 批量删除
* */
@Test
void testDeleteBatchIds(){
this.mapper.deleteBatchIds(Arrays.asList(8L,9L,10L));
}
 

 查询

/*
* 通用 查询操作
* */
@Test
void testSelectById(){
MpEmployee select = this.mapper.selectById(1L);
System.out.println("查询成功:"+select);
}
 
/*
* 通用 查询多个操作
* */
@Test
void testSelectBatchIds(){
List employees = this.mapper.selectBatchIds(Arrays.asList(2L, 3L, 4L));
for (MpEmployee employee : employees) {
System.out.println(employee);
}
}
 /*
根据条件查询一个
*/
@Test
void testSelectOne(){
QueryWrapper wrapper = new QueryWrapper<>();
//查询条件
wrapper.eq("last_name","张三");
MpEmployee employee = this.mapper.selectOne(wrapper);
System.out.println(employee);
}
 /*查询统计*/
@Test
void testSelectCount(){
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.gt("age",10);//年龄大于20岁的用户
//根据用户查询条数
Long count = this.mapper.selectCount(wrapper);
System.out.println("查询条件:"+count);
}
 
/*查询多个*/
@Test
void testSelectList(){
QueryWrapper wrapper = new QueryWrapper<>();
//设置查询条件
wrapper.like("email","xiao@163.com");
List list = this.mapper.selectList(wrapper);
for (MpEmployee mpEmployee : list) {
System.out.println(mpEmployee);
}
}