美文网首页
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