美文网首页
MybatisPlus中常用方法

MybatisPlus中常用方法

作者: very_cute_girls | 来源:发表于2019-12-13 16:10 被阅读0次

#测试环境

springboot2.x+mybatisplus3.x
mybatisplus3.x版本和2.x版本有一些区别不同。
测试实体类:User

#导入maven依赖

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

#创建User实体类

@Data
@TableName(value = "user")
public class User  extends Model<User> implements Serializable {
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;
    private String nickname;
    private String email;
    private String password;
    private String icon;
    private Integer role;
    private String userName;
    private Integer age;
    private Integer sex;
}

解析:
@Data:生成Get Set方法
@TableName(value = "user") :对应数据库中的表名称
@TableId(value = "id",type = IdType.AUTO) :使用的是数据库默认的自增策略,如果不配置,则默认使用mybatisplus中的自增策略(mybatis自增策略是Long属性,而且生成的主键很长)
Model<User> implements Serializable :序列化

#创建UserMapper接口

@Mapper
@Component("UserMapper")
public interface UserMapper extends BaseMapper<User> {
}

@Component("UserMapper") :解决idea中自动导入爆红的错误
extends BaseMapper<User> :继承接口即可实现基本的CRUD方法

#根据ID主键查询

    @Autowired
    UserMapper userMapper;
    @Test
    void contextLoads() {
        Integer id=1;
        User user = userMapper.selectById(id);
    }

#条件查询

//创建条件构造器
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
        userQueryWrapper.eq("nickname","sunshine");
        Useruser= UserMapper.selectOne(userQueryWrapper );

messageQueryWrapper.eq("nickname","sunshine");
selectOne()查询为一个,如果查询有多个符合条件会报错
其中,第一个参数为数据库中的字段名称,记住,是数据库中的字段
第二个参数为要查询的内容

sql语句中有的条件mybatisplus都有,具体可以查看官方文档https://mp.baomidou.com/这网址很容易就JJ

image.png

#解决硬编码条件构造器

感谢评论区的大佬,给的提示。

上面的例子中,我们添加的条件字段必须为数据库中相同的,这样没法体现mybatisplus的特性,所以可以使用LambdaQueryWrapper来构造

 LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<User>().eq(User::getNickname, "sunshine");

#查询全部

List<User> userList= userMapper.selectList(null);

查询全部就是不给条件,让条件为null

#条件查询多个

 QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
        // 查询角色为管理员
        messageQueryWrapper.eq("role",0);
        // 性别为女
        messageQueryWrapper.eq("sex",0);
        List<User> userList= userQueryWrapper .selectList(userQueryWrapper );

这个例子就是查询所有用户为管理员并且性别为女的用户

也可以写为
 QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
      messageQueryWrapper.eq("role",0).eq("sex",0);
       List<User> userList= userQueryWrapper .selectList(userQueryWrapper );

#添加数据

int insert = userMapper.insert(User)

其中User为实体类
返回值为数据库中修改的行数,这里添加成功返回时 “1”
多数据添加看一下官方文档,这里就不说了

#更新数据

int update = userMapper.updateById(user);

updateById()是根据user主键来更新的,如果user类中其它不需要更新的字段可以置为null,mybatisplus不会更新未设置值的字段

相关文章

网友评论

      本文标题:MybatisPlus中常用方法

      本文链接:https://www.haomeiwen.com/subject/gvifnctx.html