简化开发小技巧-Mybatis-Plus的使用和常用操作

目录

简介

快速使用

pom

代码

mapper

service

使用

常用操作

简单或操作查询

多条件或查询

更新字段为null

方法一,如果要更新的字段是String类型,

方法二, 使用mybatis-plus的字段注入。

方法三,使用UpdateWrapper方式更新

实体类有数据库没有的字段

其他


简介

官网: MyBatis-Plus

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生

特性:

ps: 简单来说就是..简单, 不写sql的crud

快速使用

pom

            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
            <!--Mybatis-Plus 注意版本-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.3</version>
            </dependency>

代码

mapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * 用户表
 *
 * @author gen
 * @since 2022-10-17 15:00:08
 */
public interface UserMapper extends BaseMapper<User> {

}

继承BaseMapper, 内置常用的crud功能, 到这里已经可以使用了

service

内也有crud等功能

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.dao.User;

/**
 * @author admin
 * @version 1.0
 * @since 2023/01/05 17:03
 */
public interface UserService extends IService<User> {

}



import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.dao.User;
import com.example.demo.dao.UserMapper;

/**
 * @author admin
 * @version 1.0
 * @since 2023/01/05 16:05
 */
@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

}

使用

常用操作

简单或操作查询

        LambdaQueryWrapper<DO> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.select(DO::getId);
        queryWrapper.isNotNull(DO::getName1).or().isNotNull(DO::getName2);
        service.list(queryWrapper);

        ==>  Preparing: SELECT id FROM user WHERE (name1 IS NOT NULL OR name2 IS NOT NULL)

多条件或查询

当有其他条件比如and时直接肯定是不能直接接在后面, 例:

        queryWrapper.eq(DO::getStatus, 1);
        ==>  Preparing: SELECT id FROM user WHERE (name1 IS NOT NULL OR name2 IS NOT NULL AND status = ?)

正确写法

        LambdaQueryWrapper<DO> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.select(DO::getId);
        queryWrapper.eq(DO::getStatus, 1);
        queryWrapper.and(wrapper -> wrapper.isNotNull(DO::getName1).or().isNotNull(DO::getName2));
        service.list(queryWrapper);
        
        ==>  Preparing: SELECT id FROM user WHERE (status = ? AND ( (name1 IS NOT NULL OR name2 IS NOT NULL) ))

更新字段为null

方法一,如果要更新的字段是String类型,

可以把前端传入的null改为空字符串(“”),这样mybati-plus就不会忽略更新该字段

方法二, 使用mybatis-plus的字段注入。

在可能为空的Model类字段上方加@TableField(fill = FieldFill.INSERT_UPDATE),问题解决。

/**
 * 介绍说明(非必填)
 */
@TableField(fill = FieldFill.UPDATE)
private String explanation;

方法三,使用UpdateWrapper方式更新

在mybatis-plus中,除了updateById方法,还提供了一个update方法,直接使用update方法也可以将字段设置为null,代码如下:

        LambdaUpdateWrapper<UserDO> updateWrapper = Wrappers.lambdaUpdate();
        updateWrapper.eq(UserDO::getId, 1L);
        updateWrapper.set(UserDO::getName1, null);
        updateWrapper.set(UserDO::getName2, null);
        userService.update(updateWrapper);

实体类有数据库没有的字段

@TableField(exist=false)
 private String remark;

其他

mybatis-plus 自带QueryWrapper自定义sql实现复杂查询_瑶山的博客-CSDN博客_querywrapper自定义sql

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

瑶山

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

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

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

打赏作者

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

抵扣说明:

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

余额充值