springboot——集成mybatis-plus(通用CRUD方法)
SpringBoot集成mybatis-plus
1. maven依赖
<!-- mybaits plus 插件 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
2.创建表
CREATE TABLE `customer` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`customer_name` varchar(255) DEFAULT NULL COMMENT '顾客名称',
`gender` varchar(255) DEFAULT NULL COMMENT '性别',
`telephone` varchar(255) DEFAULT NULL COMMENT '电话号码',
`register_time` timestamp NULL DEFAULT NULL COMMENT '注册时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COMMENT='顾客表';
3.yml配置
### mybatis-plus相关配置
mybatis-plus:
# xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
# 如果使用baseMapper就注释mapper-locations,没有文件则会报错
#mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.ys.dao
4.entity
这里使用了lombok:使用可参考:https://www.cnblogs.com/yu-si/articles/15079874.html
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("customer")// @TableName映射数据库表名
public class Customer {
//@TableId 标识这是Id 主键
@TableId(type = IdType.AUTO)
private Long id;
// 如果字段和数据库列对应可省略该注解
// @TableField(value = "NAME",exist = true)
private String customerName;
private String gender;
private String telephone;
private String registerTime;
}
5.MybatisPlusPageConfig.java
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
//@MapperScan("com.zszxz.plus.service.*.mapper*")
@MapperScan("com.ys.dao")
public class MybatisPlusPageConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
return paginationInterceptor;
}
}
6.mapper.java
继承BaseMapper<>
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ys.entity.mybatisplus.Customer;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface CustomerMapper extends BaseMapper<Customer> {
}
7.Test测试类
package com.ys;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ys.dao.CustomerMapper;
import com.ys.entity.mybatisplus.Customer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Resource
CustomerMapper customerMapper;
@Test
public void add() {
Customer customer = new Customer();
customer.setGender("男");
customer.setTelephone("66566");
int i;
for (i = 1; i < 20; i++) {
customer.setCustomerName("大牛"+i);
customerMapper.insert(customer);
}
System.out.println("============执行"+i+"条============");
}
@Test
public void update() {
Customer customer = new Customer();
customer.setId(0L);
customer.setCustomerName("二牛");
customer.setGender("男");
customer.setTelephone("66566");
customerMapper.updateById(customer);
}
@Test
public void delete() {
// customerMapper.deleteById(24L);//根据id删除
// 条件封装
QueryWrapper<Customer> wrapper = new QueryWrapper<Customer>();
wrapper.ge(true,"id",0L);
int delete = customerMapper.delete(wrapper);
System.out.println("============执行"+delete+"条============");
}
@Test
public void selectById() {
Customer customer = customerMapper.selectById(26L);
// Customer(id=26, customerName=大牛哥, gender=男, telephone=66566, registerTime=null)
System.out.println(customer);
}
@Test
public void selectByWrapper() {
// 条件封装
QueryWrapper<Customer> wrapper = new QueryWrapper<Customer>();
wrapper.eq("id",26L);
List<Customer> customers = customerMapper.selectList(wrapper);
// [Customer(id=26, customerName=大牛哥, gender=男, telephone=66566, registerTime=null)]
System.out.println(customers);
}
@Test
public void page() {
Page<Customer> page = new Page<>(1, 10);
IPage<Customer> customerIPage = customerMapper.selectPage(page, null);
List<Customer> records = customerIPage.getRecords();
for (Customer record : records) {
System.out.println("========="+record.toString());
}
}
}
分类:
开发随记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)