• 浅谈MyBatis-Plus学习之ActiveRecord


    一、ActiveRecord简单介绍

    Active Record(简称AR),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。而MP也对AR有一定支持。
    在MP中开启AR,仅需要实体类继承Model类并实现主键指定方法

    @TableName("tbl_employee")
    public class Employee extends Model<Employee>{
        private Integer id;
        private String lastName;   
        private String email;
        private Integer gender;
        private Integer age;
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public Integer getGender() {
            return gender;
        }
        public void setGender(Integer gender) {
            this.gender = gender;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        @Override
        public String toString() {
            return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + ", age="
                    + age + "]";
        }
        /**
         * 指定实体的主键属性
         */
        @Override
        protected Serializable pkVal() {
            // TODO Auto-generated method stub
            return id;
        }
    }

    继承Model类后,可以看出Employee实体继承的方法,从而支持一系列的CRUD操作

     二、以下是ActiveRecord的使用例子

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations= {"classpath:applicationContext.xml"})
    public class TestActiveRecord {
        @Autowired
        private EmployeeMapper employeeMapper;
        
        /**
         * AR插入操作
         */
        @Test
        public void testARInsert() {
            Employee employee = new Employee();
            employee.setLastName("Mary");
            employee.setEmail("mary@121.com");
            employee.setGender(0);
            employee.setAge(30);
            
            boolean res = employee.insert();
            System.out.println(res);
        } 
        
        /**
         * AR修改操作
         */
        @Test
        public void testARUpdate() {
            Employee employee = new Employee();
            employee.setId(15);
            employee.setLastName("MaryNew");
            employee.setEmail("maryNew@121.com");
            employee.setGender(0);
            
            boolean res = employee.updateById();
            System.out.println(res);
        }
        
        /**
         * AR查询操作
         */
        @Test
        public void testARSelect() {
            Employee employee = new Employee();
            employee.setId(15);
            Employee emp = employee.selectById();
            
            System.out.println(emp);
        }
        
        /**
         * AR查询所有操作
         */
        @Test
        public void testARSelectAll() {
            Employee employee = new Employee();
            List<Employee> emps = employee.selectAll();
            
            System.out.println(emps);
        }
        
        /**
         * AR条件查询操作
         */
        @Test
        public void testARSelectListWrapper() {
            Employee employee = new Employee();
            List<Employee> emps = employee.selectList(new EntityWrapper<Employee>()
                                                      .eq("gender", 0)
                                                      .like("last_name", "a")
                                                     );
            
            System.out.println(emps);
        }
        
        /**
         * AR条件查询数量操作
         */
        @Test
        public void testARSelectCountWrapper() {
            Employee employee = new Employee();
            Integer count = employee.selectCount(new EntityWrapper<Employee>()
                                                 .eq("gender", 0)
                                                 .like("last_name", "a")
                                                );
            
            System.out.println(count);
        }
        
        /**
         * AR删除操作
         */
        @Test
        public void testARDelete() {
            Employee employee = new Employee();
            employee.setId(9);
            boolean b = employee.deleteById();
            
            System.out.println(b);
        }
        
        /**
         * AR根据条件删除操作
         */
        @Test
        public void testARDeleteWrapper() {
            Employee employee = new Employee();
            boolean b = employee.delete(new EntityWrapper<>()
                            .eq("gender", 1)
                            .like("last_name", "r"));
            
            System.out.println(b);
        }
        
        /**
         * AR根据条件分页操作
         */
        @Test
        public void testARSelectPage() {
            Employee employee = new Employee();
            Page<Employee> page = employee.selectPage(new Page<Employee>(1, 2), 
                                new EntityWrapper<Employee>()
                                .eq("gender", 0));
            List<Employee> records = page.getRecords();
            
            System.out.println("records: " + records);
        }
    }
  • 相关阅读:
    day24 Pyhton学习 反射
    正则表达式练习
    day23 Pyhton学习 昨日回顾.re模块.序列化模块
    day22 函数整理
    day22 Pyhton学习 re模块和正则表达式
    day21 Pyhton学习 模块
    函数整理
    一个关于浮点数运算需要注意的地方
    关于逻辑运算案例笔记
    数据的表现形式和进制之间的转换
  • 原文地址:https://www.cnblogs.com/jayhou/p/9824232.html
Copyright © 2020-2023  润新知