Springboot整合MybatisPlus

简介: Springboot整合MybatisPlus

简介

官网介绍,MyBatis-Plus(简称 MP)是一个 [MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。详细了解见官网:https://baomidou.com/

引入依赖

引入主要的依赖:

 <!--mybatis-plus-->

   <dependency>

     <groupId>com.baomidou</groupId>

     <artifactId>mybatis-plus-boot-starter</artifactId>

     <version>3.3.1</version>

   </dependency>

配置分页插件

package com.elite.springboot.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

/**

* mybatisplus配置类

*/

@Configuration

public class MybatisPlusConfig {

   /**

    * 分页插件

    */

   @Bean

   public PaginationInterceptor paginationInterceptor() {

       return new PaginationInterceptor();

   }

   /**

    * 针对 update 和 delete 语句 作用: 阻止恶意的全表更新删除

    * @return

    */

   @Bean

   public MybatisPlusInterceptor mybatisPlusInterceptor() {

       MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

       interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());

       return interceptor;

   }

}

启动类同样需要配置扫描mapper包

@SpringBootApplication

@MapperScan("com.elite.springboot.mapper")

public class SpringbootMybatisPlusApp

{

   public static void main( String[] args ) {

       SpringApplication.run(SpringbootMybatisPlusApp.class,args);

   }

}

实体类

由于我的mysql版本是8.0.30,注解@TableName 需要指定表名并添加"``",否则会报语法错误,需要指定主键ID,表字段和实体类字段一致可以不用指定。

@Data

@Getter

@Setter

//注意表明的大小写

@TableName("`order`")

public class Order {

   //订单ID

   @TableId(value = "order_id",type = IdType.AUTO)

   private Integer order_id;

   //订单号

   private Integer order_no;

   //商品编号

   private Integer product_id;

   //用户

   private Integer user_id;

   //'订单产品数量'

   private Integer order_num ;

   //'订单金额'

   private BigDecimal order_amt ;

   //订单状态 0待确认,1已确认,2已收货,3已取消,4已完成,5已作废

   private String order_status;

   //支付状态 0待支付,1已支付,2部分支付,3已退款,4拒绝退款

   private String pay_status;

   //创建时间

   private Date create_time;

   //更新时间

   private Date update_time;

   //创建用户

   private String create_user;

   //更新用户

   private String update_user;

}

映射类Mapper

/**

* 定义的一个Mapper类,继承mybatisplus封装的类BaseMapper

*/

public interface OrderMapper extends BaseMapper<Order> {

}


MybatisPlus官方提供核心接口BaseMapper,只要继承与指定实体类,我们这边就可以进行用提供的核心接口操作数据库了。核心接口源码如下:

   int insert(T entity);

   int deleteById(Serializable id);

   int deleteByMap(@Param("cm") Map<String, Object> columnMap);

   int delete(@Param("ew") Wrapper<T> queryWrapper);

   int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);

   int updateById(@Param("et") T entity);

   int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

   T selectById(Serializable id);

   List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);

   List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);

   T selectOne(@Param("ew") Wrapper<T> queryWrapper);

   Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);

   List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);

   List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);

   List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);

   <E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);

   <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param("ew") Wrapper<T> queryWrapper);

测试类

/**

* 测试订单类

*/

@Slf4j

@RunWith(SpringRunner.class)

@SpringBootTest

public class AppTest {

   @Resource

   OrderMapper orderMapper;

   /**

    * 保存订单

    */

   @Test

   public void SaveOrder() {

       Order order = new Order();

       order.setOrder_no(3);

       order.setProduct_id(3);

       order.setUser_id(3);

       order.setOrder_num(2);

       order.setOrder_amt(BigDecimal.valueOf(30));

       order.setOrder_status("下单");

       order.setPay_status("未支付");

       order.setCreate_user("plus");

       order.setUpdate_user("plus");

       //调用新增订单方法Insert

       orderMapper.insert(order);

   }

   /**

    * 更新订单数据

    */

   @Test

   public void UpdateOrder() {

       Order order = new Order();

       order.setOrder_id(6);

       order.setOrder_status("发货");

       order.setPay_status("支付");

       int count = orderMapper.updateById(order);

       if (count > 0){

           System.out.println("更新成功!");

       }else{

           System.out.println("更新失败");

       }

   }

   /**

    * 根据订单ID获取订单 SELECT order_id,order_no,product_id,user_id,order_num,

    * order_amt,order_status,pay_status,create_time,update_time,create_user,update_user FROM `order` WHERE order_id=?

    *

    */

   @Test

   public void GetOrder() {

       Order order = orderMapper.selectById(5);

       System.out.println(order);

   }

   /**

    * 获取订单列表

    * SELECT order_id,order_no,product_id,user_id,order_num,order_amt,order_status,

    * pay_status,create_time,update_time,create_user,update_user FROM `order`

    */

   @Test

   public void GetOrderList() {

       QueryWrapper<Order> queryWrapper = new QueryWrapper<>();

       //可以指定查询的条件

       //QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类

       //可以指定条件

       //queryWrapper.ge("order_no","2");//大于等于 >=

       //le

       //like

       //nolike 等具体参考 https://baomidou.com/pages/10c804/#abstractwrapper

       List<Order> orderList = orderMapper.selectList(queryWrapper);

       for( Order order :orderList){

           System.out.println(order);

       }

   }

   /**

    * 删除订单

    */

   @Test

   public void DelOrder() {

       int count = orderMapper.deleteById(7);

       if (count > 0 ){

           System.out.println("删除成功!");

       }else{

           System.out.println("删除失败!");

       }

   }

}

相关文章
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
288 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
|
1月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
125 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
2月前
|
XML Java 关系型数据库
springboot 集成 mybatis-plus 代码生成器
本文介绍了如何在Spring Boot项目中集成MyBatis-Plus代码生成器,包括导入相关依赖坐标、配置快速代码生成器以及自定义代码生成器模板的步骤和代码示例,旨在提高开发效率,快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。
springboot 集成 mybatis-plus 代码生成器
|
2月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
2月前
|
前端开发 JavaScript Java
技术分享:使用Spring Boot3.3与MyBatis-Plus联合实现多层次树结构的异步加载策略
在现代Web开发中,处理多层次树形结构数据是一项常见且重要的任务。这些结构广泛应用于分类管理、组织结构、权限管理等场景。为了提升用户体验和系统性能,采用异步加载策略来动态加载树形结构的各个层级变得尤为重要。本文将详细介绍如何使用Spring Boot3.3与MyBatis-Plus联合实现这一功能。
114 2
|
3月前
|
Java 数据库连接 测试技术
SpringBoot 3.3.2 + ShardingSphere 5.5 + Mybatis-plus:轻松搞定数据加解密,支持字段级!
【8月更文挑战第30天】在数据驱动的时代,数据的安全性显得尤为重要。特别是在涉及用户隐私或敏感信息的应用中,如何确保数据在存储和传输过程中的安全性成为了开发者必须面对的问题。今天,我们将围绕SpringBoot 3.3.2、ShardingSphere 5.5以及Mybatis-plus的组合,探讨如何轻松实现数据的字段级加解密,为数据安全保驾护航。
264 1
|
3月前
|
Java 关系型数据库 MySQL
1、Mybatis-Plus 创建SpringBoot项目
这篇文章是关于如何创建一个SpringBoot项目,包括在`pom.xml`文件中引入依赖、在`application.yml`文件中配置数据库连接,以及加入日志功能的详细步骤和示例代码。
|
3月前
|
数据库
elementUi使用dialog的进行信息的添加、删除表格数据时进行信息提示。删除或者添加成功的信息提示(SpringBoot+Vue+MybatisPlus)
这篇文章介绍了如何在基于SpringBoot+Vue+MybatisPlus的项目中使用elementUI的dialog组件进行用户信息的添加和删除操作,包括弹窗表单的设置、信息提交、数据库操作以及删除前的信息提示和确认。
elementUi使用dialog的进行信息的添加、删除表格数据时进行信息提示。删除或者添加成功的信息提示(SpringBoot+Vue+MybatisPlus)
|
3月前
|
Java 数据库 Spring
MyBatisPlus分页插件在SpringBoot中的使用
这篇文章介绍了如何在Spring Boot项目中配置和使用MyBatis-Plus的分页插件,包括创建配置类以注册分页拦截器,编写测试类来演示如何进行分页查询,并展示了测试结果和数据库表结构。
MyBatisPlus分页插件在SpringBoot中的使用