目录
简介
快速使用
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

















![[数据结构基础]栈和队列的结构及接口函数](https://img-blog.csdnimg.cn/1891b6b26f8d4cbc850b93c7d6c6a697.png)

