SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器

场景

Mybatis-Plus(简称MP)是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,

所以引入Mybatis-Plus不会对现有的Mybatis构架产生任何影响。MyBatis 增强工具包,简化 CRUD 操作。

启动加载 XML 配置时注入单表 SQL 操作 ,为简化开发工作、提高生产率而生。

MybatisPlus

MyBatis-Plus

特性

无侵入: 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

损耗小: 启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:

内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题

支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作

支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,

更有超多自定义配置等您来使用内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,

写分页等同于普通 List 查询

分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库

内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

注:

博客:
霸道流氓气质-CSDN博客

实现

1、新建SpringBoot项目,引入mybatisplus的依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

注意这里不再需要引入Mybatis的依赖,mp已经包含。

这里还需要连接mysql,所以添加mysql的驱动

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

其它使用的依赖完整如下

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--MySQL驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

2、在application.yml配置文件中添加mp的配置项

mybatis-plus:
  # 指定 Mapper XML 文件的位置,使用 classpath 通配符指定路径
  mapper-locations: classpath:/mapper/**/*.xml
  # 指定实体类的包路径,用于自动扫描并注册类型别名
  type-aliases-package: com.badao.demo.entity
  global-config:
    db-config:
      id-type: input
      # 驼峰下划线转换(将数据库字段的下划线命名规则转换为 Java 实体类属性的驼峰命名规则)
      db-column-underline: true
      # 刷新 mapper
      refresh-mapper: true
  configuration:
    # 将 Java 实体类属性的驼峰命名规则转换为数据库字段的下划线命名规则
    map-underscore-to-camel-case: true
    # 查询结果中包含空值的列,在映射的时候,不会映射这个字段
    call-setters-on-nulls: true
    # 开启 sql 日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

这里着重修改mapper文件的位置以及实体类的包路径修改为对应。

更多配置参考官网说明:

使用配置 | MyBatis-Plus

3、添加插件配置文件

mp支持很多插件,比如这里引入分页插件,新建配置类

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    /**
     * 加载分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

}

更多配置见官方文档

插件主体 | MyBatis-Plus

4、新建表t_user

DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `age` int NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

SET FOREIGN_KEY_CHECKS = 1;

5、新建实体类User

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "t_user")
public class User implements Serializable {

    private static final long serialVersionUID = -5514139686858156155L;

    private Integer id;

    private Integer userId;

    private String name;

    private Integer age;

    @TableField(exist = false)
    private String address;

}

这里让实体类与表名不一致,通过注解@TableName(value = "t_user")对应。

并且实体类新增一个表中没有的字段address,通过注解@TableField(exist = false)来声明。

更多注解使用方法参考官方文档

注解 | MyBatis-Plus

6、 Mapper层

BaseMapper<T>是mybatis-plus设计的一个接口,里面包含了单表的CRUD。

新建mapper并使其继承BaseMapper,则可直接调用CRUD的方法。

@Repository
public interface UserMapper extends BaseMapper<User> {

}

那么可以直接调用

如果需要在Service层可以这样声明

import com.badao.demo.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;

public interface UserService extends IService<User> {

}

Service实现

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
    @Autowired
    UserMapper userMapper;
}

调用示例

    @Autowired
    private UserService userService;

    @Test
    void test1() {
        User byId = userService.getById(5);
        System.out.println(byId);
    }

这块可具体参考官方文档说明

CRUD 接口 | MyBatis-Plus

7、如果要实现条件构造器查询和更新

        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper();
        wrapper.eq(User::getName,"222");
        List<User> users = userMapper.selectList(wrapper);
        System.out.println(users);

具体参考官方文档说明

条件构造器 | MyBatis-Plus

8、要实现自定义sql

通过xml方式

mapper中新建方法

@Repository
public interface UserMapper extends BaseMapper<User> {

    Integer insertOne(User u);

}

新建xml,xml中新建方法

<mapper namespace="com.badao.demo.mapper.UserMapper" >
    <resultMap id="resultMap" type="com.badao.demo.entity.User" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="user_id" property="userId" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="age" property="age" jdbcType="INTEGER" />
    </resultMap>

    <insert id="insertOne">
        insert into t_user (user_id,name,age) values (#{userId},#{name},#{age})
    </insert>
</mapper>

以上通过xml方法还可以传递条件,具体参考官方文档说明。

通过注解的方式并传递条件自定义sql

mapper中新建方法并添加注解@Select

@Repository
public interface UserMapper extends BaseMapper<User> {

    Integer insertOne(User u);

    @Select("SELECT * FROM t_user ${ew.customSqlSegment}")
    List<User> selectOver25(@Param(Constants.WRAPPER) Wrapper wrapper);
}

方法调用

        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper();
        wrapper.gt(User::getAge,25);
        List<User> users = userMapper.selectOver25(wrapper);
        System.out.println(users);

更多用法参考官方文档说明

9、mp还有很多其他用法,官方文档写的很清楚详细,自行阅读。


 

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Spring Boot整合Mybatis Plus的增删改查操作步骤如下: 1. 首先,在pom.xml文件添加Mybatis Plus和MySql的依赖。 2. 创建一个实体类,使用注解@Table和@Id来标识表名和主键。 3. 创建一个Mapper接口,使用注解@Mapper和@Repository来标识。 4. 在Mapper接口定义增删改查的方法,使用注解@Select、@Insert、@Update和@Delete来标识。 5. 创建一个Service接口和实现类,使用注解@Service和@Autowired来标识。 6. 在Service实现调用Mapper接口的方法,完成增删改查的操作。 7. 在Controller注入Service实现类,使用注解@RestController和@RequestMapping来标识。 8. 在Controller定义请求方法,调用Service的方法,返回结果。 以上就是Spring Boot整合Mybatis Plus的增删改查操作的步骤。 ### 回答2: Spring Boot是一款基于Spring框架的快速开发框架,可以整合多种框架来实现功能。MyBatis-Plus是MyBatis的扩展工具,提供了快速开发的功能,可以更加方便地完成数据库操作。在项目,如果需要使用MyBatis-Plus进行增删改查操作,可以通过如下步骤进行整合。 1. 引入依赖 在pom.xml文件加入以下依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency> ``` 2. 配置数据源 在application.properties或application.yml文件配置数据源,如下所示: ```yaml spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 配置MyBatis-Plus插件 在Spring Boot的启动类上加上@EnableTransactionManagement注解,开启事务管理。同时在配置类加入如下内容: ```java @Configuration @MapperScan("com.example.mapper") public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); return paginationInterceptor; } } ``` 这里配置了分页插件。 4. 编写Mapper层的代码 和MyBatis一样,需要在Mapper层编写定义SQL语句的接口方法。使用MyBatis-Plus的方式是继承BaseMapper类,这个类封装了基本的CRUD操作。例如: ```java public interface UserMapper extends BaseMapper<User> { } ``` 在这个例子,User是实体类,UserMapper扩展了BaseMapper接口,可以直接使用其增删改查方法。 5. 编写Service层的代码 Service层通过注入Mapper层的对象来实现数据库操作,例如: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> findAll() { return userMapper.selectList(null); } @Override public void save(User user) { userMapper.insert(user); } @Override public void update(User user) { userMapper.updateById(user); } @Override public void delete(Long id) { userMapper.deleteById(id); } @Override public User findById(Long id) { return userMapper.selectById(id); } } ``` 可以看到,基本的增删改查操作都可以通过继承BaseMapper接口来完成。 以上就是Spring Boot整合MyBatis-Plus进行增删改查的流程,通过这种方式,可以减少代码量,提高开发效率。 ### 回答3: SpringBoot是一个快速开发的框架,MybatisPlus是对Mybatis的强化版,可以帮助开发者更方便地操作数据库。在SpringBoot项目整合MybatisPlus,可以提高开发效率,如何使用MybatisPlus实现CRUD操作呢? 首先,我们需要导入相关的依赖。在pom.xml添加以下代码: ```xml <!-- MybatisPlus依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> <!-- MySQL依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> ``` 在SpringBoot,我们只需要简单地配置一个数据源即可连接MySQL数据库。在application.properties文件添加: ```properties # MySQL配置 spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 接下来,我们需要定义一个实体类,在其定义数据库表字段的属性。例如,我们定义一个User实体类: ```java public class User { private Long id; private String name; private String email; // 省略getter和setter方法 } ``` 然后,我们需要定义一个UserMapper接口,继承BaseMapper<T>接口,并绑定对应的实体类: ```java public interface UserMapper extends BaseMapper<User> { } ``` 现在,我们就可以在Service实现User的增删改查操作了。例如,我们实现一个UserService: ```java @Service public class UserService { @Autowired private UserMapper userMapper; /** * 添加用户 */ public boolean addUser(User user) { return userMapper.insert(user) == 1; } /** * 根据ID删除用户 */ public boolean deleteUserById(Long id) { return userMapper.deleteById(id) == 1; } /** * 更新用户信息 */ public boolean updateUser(User user) { return userMapper.updateById(user) == 1; } /** * 查询所有用户信息 */ public List<User> getUsers() { return userMapper.selectList(null); } /** * 根据ID查询用户 */ public User getUserById(Long id) { return userMapper.selectById(id); } } ``` 最后,在Controller定义相应的接口,调用UserService的方法即可。例如: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; /** * 添加用户 */ @PostMapping("/add") public Result addUser(@RequestBody User user) { boolean res = userService.addUser(user); return res ? ResultUtils.success() : ResultUtils.fail("添加失败"); } /** * 删除用户 */ @DeleteMapping("/delete/{id}") public Result deleteUserById(@PathVariable("id") Long id) { boolean res = userService.deleteUserById(id); return res ? ResultUtils.success() : ResultUtils.fail("删除失败"); } /** * 更新用户 */ @PutMapping("/update") public Result updateUser(@RequestBody User user) { boolean res = userService.updateUser(user); return res ? ResultUtils.success() : ResultUtils.fail("更新失败"); } /** * 查询所有用户 */ @GetMapping("/list") public Result getUsers() { List<User> userList = userService.getUsers(); return ResultUtils.success(userList); } /** * 根据ID查询用户 */ @GetMapping("/{id}") public Result getUserById(@PathVariable("id") Long id) { User user = userService.getUserById(id); return user != null ? ResultUtils.success(user) : ResultUtils.fail("查询失败"); } } ``` 这样,我们就使用了MybatisPlus实现了简单的CRUD操作。 MybatisPlus的强大之处不止如此,它还提供了很多全局配置和注解,能够帮助我们更快更方便地完成开发任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值