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