其他分享
首页 > 其他分享> > Mybaits-plus-注解和查询

Mybaits-plus-注解和查询

作者:互联网

Springboot数据库连接:mysql 8及以上版本: com.mysql.cj.jdbc.Driver   以下版本:去掉cj

 MyBatisPlus

Annotation( 注解)  extension(扩展)  generation(代码生产器)

运行原理:

 首先通过 Entity(实体)也就是平时所说的pojo  进行自动扫描 (Scan Entity)

然后通过反射机制 (Reflection extraction)和 类名和实体自动生成项目中的绝大数代码

最典型的是持久层的增删改查 和业务层的基本增删改查 --通过反射机制和java 实体类的扫描

 

常用注解:
@TableName(value=”t_user”); 如果我们不定的情况下 默认用类名 当表名

可是如果我们的表名改了,又不用注解 则mybaits-plus框架中的基本查询方法不可用;

因为基础方法是通过反射机制进行查询的--反射过后的表名是user在运行时动态产生

如果我们的表改了,没有用到注解@Table指定表的话 **.xml 里面的表结构是可以改为对应的;

可是动态产生的就会报表不存在;

@TableLogic 逻辑删除

分页插件功能: 1:添加配置类  创建config包,

 

乐观锁原理:更新版本的控制

版本号对比 --查找或者更新的时候 用版本号   1:在实体类中添加vension              2:添加乐观锁插件

 条件构造器:

查询功能 或者删除功能 都可以

 

//查询指定数据 只需要name 字段--select 配合selectMaps一起使用
    @Test
    public void seletNameByQueryWrapper(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("name","age");
        //缺陷--返回时 非需要查询字段是null
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }
    //lambaQuery
    @Test
    public void seletBylambaQuery(){
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(User::getName,"ly66");
        List<User> users = userMapper.selectList(lambdaQueryWrapper);
        users.forEach(System.out::println);
    }
    //查询姓名有ly且 (年龄小于18 或者email含有ly)的用户 更新数据为name ly666,年龄18
    @Test //方法一:
    public void updateByQueryWrapper(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name","ly")
                .and(i->i.lt("age",18).or().like("email","ly"));
        User user = new User();
        user.setName("ly666");
        user.setAge(18);
        int count = userMapper.update(user, queryWrapper);
        System.out.println(count);
    }
    //方法二:
    @Test
    public void updateByUpdateWrapper(){
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("age",20)
                .set("name","ly666")
                .like("name","ly")
                .and(el->el.lt("age",18).or().like("email","ly"));
//        userMapper.update(null,updateWrapper);
        //如果有自动填充的字段比如 create_time等
        User user = new User();
        userMapper.update(user,updateWrapper);
    }
    //删除指定数据
    public void deleteByQueryWrapper(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("email","1@qq.com");
        userMapper.delete(queryWrapper);
    }
    //获取指定数据
    public void queryWrapper(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("age").orderByDesc("id");
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

 

标签:queryWrapper,QueryWrapper,void,userMapper,Mybaits,plus,user,new,注解
来源: https://www.cnblogs.com/liyanxi/p/16634787.html