Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
通过封装一些基础通用的curd方法,我们不用再在xml文件中编写sql语句,就可以直接调用api进行对数据库的操作。
com.baomidou
mybatis-plus-boot-starter
3.4.1
2.3 在 Spring Boot 主类上面使用 @MapperScan 注解扫描我们自定义的 mapper
2.4 自定义自己的 mapper,该 mapper 将继承 com.baomidou.mybatisplus.core.mapper.BaseMapper
2.5 在我们的服务中使用 @Autowired 注解自动注入自定义的 mapper
@Mapper
public interface OnlinePriceMapper extends BaseMapper {
}
mapper中没有定义任何方法
package com.online.analyze.service.impl;
import com.online.analyze.mapper.OnlinePriceMapper;
import com.online.analyze.model.OnlinePrice;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
/**
* @author lijianxi
* @date 2022年03月18日 11:13 上午
*/
@SpringBootTest
public class MapperTest {
@Autowired
OnlinePriceMapper onlinePriceMapper;
@Test
public void testMapper() {
OnlinePrice onlinePrice = new OnlinePrice();
onlinePrice.setId(3999222L);
onlinePrice.setAddDate(new Date());
onlinePrice.setDescription("test");
onlinePrice.setSummary("test");
onlinePrice.setProcessMethod("修改数据");
//新增
int result = onlinePriceMapper.insert(onlinePrice);
if (result > 0) {
System.out.println("插入成功");
}
//查询
OnlinePrice price = onlinePriceMapper.selectById(3999222L);
System.out.println(price.getDescription() + "查询成功");
//更新
onlinePrice.setDescription("修改后");
onlinePriceMapper.updateById(onlinePrice);
System.out.println(onlinePriceMapper.selectById(3999222L).getDescription() + "修改成功");
//删除
if (onlinePriceMapper.deleteById(3999222L) > 0) {
System.out.println("删除成功");
}
}
}
通过注入mapper,就可以使用 mapper 的 insert(插入)、selectById(根据ID查找)、updateById(根据ID更新)和 deleteById(根据ID删除)等简单的 CRUD 操作
常用的增删改查方法可以查看BaseMapper接口
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.baomidou.mybatisplus.core.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
public interface BaseMapper extends Mapper {
int insert(T entity);
int deleteById(Serializable id);
int deleteByMap(@Param("cm") Map columnMap);
int delete(@Param("ew") Wrapper queryWrapper);
int deleteBatchIds(@Param("coll") Collection extends Serializable> idList);
int updateById(@Param("et") T entity);
int update(@Param("et") T entity, @Param("ew") Wrapper updateWrapper);
T selectById(Serializable id);
List selectBatchIds(@Param("coll") Collection extends Serializable> idList);
List selectByMap(@Param("cm") Map columnMap);
T selectOne(@Param("ew") Wrapper queryWrapper);
Integer selectCount(@Param("ew") Wrapper queryWrapper);
List selectList(@Param("ew") Wrapper queryWrapper);
List
除了通过已定义的方法来查询还可以通过 Wrapper 构建查询条件
@Test
public void testMapper(){
//查询id为3999222数据信息
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", 3999222L);
OnlinePrice onlinePrice = onlinePriceMapper.selectOne(queryWrapper);
System.out.println(onlinePrice.getId());
//查询添加日期在区间内并且user_city不为null的数据
QueryWrapper queryWrapper1 = new QueryWrapper<>();
queryWrapper1.between("add_date","2022-02-02","2022-02-10");
queryWrapper1.isNotNull("user_city");
String summary ="test";
// 第一个参数为是否执行条件,为true则执行该条件
queryWrapper1.eq(StringUtils.isNotBlank(summary),"summary",summary);
List onlinePrices = onlinePriceMapper.selectList(queryWrapper1);
for (OnlinePrice price : onlinePrices) {
System.out.println(price);
}
}
@Test
public void testPage() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.isNotNull("description");
//每页四个
Page page = new Page<>(1, 4);
Page onlinePricePage = onlinePriceMapper.selectPage(page, queryWrapper);
for (OnlinePrice record : page.getRecords()) {
System.out.println(record);
}
}
除了 BaseMapper 接口,MyBatis Plus 还提供了 IService 接口,该接口对应 Service 层。MyBatis Plus 的通用 Service CRUD 实现了 IService 接口,进一步封装 CRUD
该接口使用 get(查询单行)、remove(删除)、list(查询集合)和 page(分页)前缀命名的方式进行区别。
@Autowired
OnlinePriceService onlinePriceService;
@Test
public void testService(){
OnlinePrice price = new OnlinePrice();
price.setId(22222222L);
price.setDescription("test");
onlinePriceService.save(price);
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("description","test");
OnlinePrice one = onlinePriceService.getOne(queryWrapper);
Page page = new Page<>(1,4);
QueryWrapper queryWrapper1 = new QueryWrapper<>();
queryWrapper1.between("add_date", "2022-02-02", "2022-02-10");
onlinePriceService.page(page,queryWrapper1);
}
以上介绍了mybatisplus的常用基础用法,mybatisplus还有自动代码生成等其他功能,可以自动生成代码,以后有空继续学习分享