【MyBatis-Plus】条件构造器 & ActiveRecord

本文详细介绍了MyBatis-Plus的条件构造器,包括基本比较查询、模糊查询、排序和逻辑查询等操作。同时,深入探讨了ActiveRecord的概念,解释了其作为ORM层的工作原理,以及如何在Java中使用ActiveRecord进行数据操作,如根据主键查询、新增、更新和删除数据。

1.条件构造器

1.1基本比较查询

命令作用
eq等于
ne不等于
gt大于
ge大于等于
lt小于
le小于等于
between在两个值之间
notBetween不 在两个值之间
in字段 IN (value.get(0), value.get(1), …)
on字段 NOT IN (v0, v1, …)
//基本比较查询
    //eq 等于 / ne 不等于
    //gt 大于  / ge  大于等于
    //lt 小于  /le   小于等于
    //between  在两个值之间
    //notBetween 不在这两个值之间
    //in  字段 IN (value.get(0), value.get(1), ...)
    //ontIn  字段 NOT IN (v0, v1, ...)

    @Test
    void testEQ(){
        QueryWrapper<User> wrapper = new QueryWrapper<User>();

        wrapper.eq("password","123456")
                .lt("age",23)
                .in("name","李四","王五","赵六");

        List<User> users = this.userMapper.selectList(wrapper);
        for(User user:users){
            System.out.println(user);
        }
    }

1.2模糊查询

命令作用
like
notLike
likeLeft
likeRight
 @Test
        void testWrapper(){
        QueryWrapper<User> wrapper = new QueryWrapper<User>();
        wrapper.like("name","曹");

        List<User> users = this.userMapper.selectList(wrapper);
        for(User user:users){
            System.out.println(user);
        }
    }

1.3排序

命令作用
orderBy
orderByAsc升序
orderByDesc降序
    //排序
    //orderBy
    //orderByAsc
    //orderByDesc
    @Test
    void testWrapper2(){
        QueryWrapper<User> wrapper = new QueryWrapper<User>();
        wrapper.orderByDesc("age");
        List<User> users = this.userMapper.selectList(wrapper);
        for(User user:users){
            System.out.println(user);
        }
    }

1.4逻辑查询

命令作用
or
and
  //逻辑查询
    //or
    //and

    @Test
    void testWrapper3(){
        QueryWrapper<User> wrapper = new QueryWrapper<User>();
        wrapper.eq("name","李四").or().eq("age",23);
        List<User> users = this.userMapper.selectList(wrapper);
        for(User user:users){
            System.out.println(user);
        }
    }

可以通过select方法进行指定字段

 //select  通过select方法进行指定字段
    @Test
    void testWrapper4(){
        QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.eq("name","李四")
        .or()
        .eq("age",24)
        .select("id","name","age");

        List<User> users = this.userMapper.selectList(wrapper);
        for(User user:users){
            System.out.println(user);
        }
    }

在这里插入图片描述

2.ActiveRecord

定义: ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。
ActiveRecord的主要思想:

  1. 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段
    在类中都有相应的Field;
  2. ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD;
  3. ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑;

2.2如何使用AR

只需要将实体对象继承Model即可

package cn.itcast.mp.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")

public class User extends Model<User> {

    @TableId(type = IdType.AUTO)//设置id类型为自增
    private Long id;
    private String userName;
    @TableField(select = false) //不加入查询字段
    private String password;
    private String name;
    private Integer age;
    @TableField(value = "email") //解决字段名不一致
    private String mail;

    @TableField(exist = false) //解决该字段在数据库表不存在
    private String address;

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }


}

2.3根据主键查询

 //使用AR
    //1.根据主键查询
    @Test
    void testAR(){
        User user = new User();
        user.setId(2L);
        User user1 = user.selectById();

        System.out.println(user1);
    }

2.4新增数据

//2.新增数据
    @Test
    void testAR2(){
        User user = new User();
        user.setName("刘备");
        user.setAge(30);
        user.setPassword("123456");
        user.setUserName("liubei");
        user.setMail("liubei@itcast.cn");

        boolean insert = user.insert();
        System.out.println(insert);
    }

2.5更新操作

  //3.更新操作
    @Test
    public void testAR3(){
        User user = new User();
        user.setId(7L);
        user.setAge(35);

        boolean update = user.updateById();
        System.out.println(update);
    }

2.6 删除

 //4.删除操作
    @Test
    void testAR4(){
    User user =new User();
    user.setId(7L);

        boolean delete = user.deleteById();
        System.out.println(delete);
    }

2.7 根据条件查询

//5.根据条件查询
    @Test
     void testAR5(){
        User user = new User();
        QueryWrapper<User> wrapper = new QueryWrapper<User>();
        wrapper.le("age","20");

        List<User> users = user.selectList(wrapper);
        for(User user1:users){
            System.out.println(user1);
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值