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