MyBatisPlus系列之ActiveRecord(活动记录)

上篇:MyBatisPlus系列之条件构造器 EntityWrapper

一、ActiveRecord(活动记录) 

1、ActiveRecord概述

Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。

ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言,对于 ActiveRecord 往往只能感叹其优雅,所以MP也在 AR 道路上进行了一定的探索 

2、开启AR模式(实体类继承Model类)

项目架构图

2.1、添加操作

(1)创建bean实体类

package org.apache.mybatisplus.bean;

import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import lombok.ToString;

import java.io.Serializable;

/**
 * javaBean
 *
 * 定义JavaBean中成员变量时所使用的类型:
 * 	 因为每个基本类型都有一个默认值:
 * 	   int ==> 0
 * 	   boolean ==> false
 */

/*
 * MybatisPlus会默认使用实体类的类名到数据中找对应的表.
 *
 */
@Data
@ToString
public class Employee extends Model<Employee> {
	private Integer id ;   //  int
	@TableField(value = "last_name")
	private String  lastName;
	private String  email ;
	private Integer gender;
	private Integer age ;

	@TableField(exist=false)
	private Double salary ;

	/**
	 * 指定当前实体类的主键属性
	 */
	@Override
	protected Serializable pkVal() {
		return id;
	}
}

它这个实体类实现了pkVal方法,如图所示:

(2)insert操作

package org.apache.test;


import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");
	/**
	 * AR  插入操作
	 */
	@Test
	public void testARInsert() {
		Employee employee = new Employee();
		employee.setLastName("宋老师");
		employee.setEmail("sls@apache-mybatisPlues.com");
		employee.setGender(1);
		employee.setAge(35);
		boolean result = employee.insert();
		System.out.println("result:" + result);
	}
}

打印输出

插入ok

 

 2.2、修改操作

package org.apache.test;


import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");

	/**
	 * AR 修改操作
	 */
	@Test
	public void testARUpdate() {
		Employee employee = new Employee();
		employee.setId(12);
		employee.setLastName("宋老湿");
		employee.setEmail("sls@apache-mybatisPlues.com");
		employee.setGender(1);
		employee.setAge(36);


		boolean result = employee.updateById();
		System.out.println("result:" +result );

	}

}

 打印输出

修改前的数据:

 修改后的数据:

2.3、查询操作采用selectById方法 

(1)第一种方法【传参数】

package org.apache.test;


import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");

	/**
	 * AR 查询操作
	 */
	@Test
	public void testARSelect() {
		Employee employee = new Employee();
		Employee result = employee.selectById(12);
		System.out.println(result );

	}

}

打印输出

 (2)第二种方法【不传参数】

package org.apache.test;


import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");

	/**
	 * AR 查询操作
	 */
	@Test
	public void testARSelect() {
		Employee employee = new Employee();
		employee.setId(12);
		Employee result = employee.selectById();
		System.out.println(result );
	}

}

 打印输出

 2.4、通过selectAll方法完成查询操作

package org.apache.test;


import com.baomidou.mybatisplus.mapper.EntityWrapper;
import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");

	/**
	 * AR 查询操作
	 */
	@Test
	public void testARSelect() {
     Employee employee = new Employee();

						List<Employee> emps = employee.selectAll();
		System.out.println(emps);
	}

}

 打印输出

[Employee(id=1, lastName=Tom, email=tom@apache.mybatis-Plus.com, gender=1, age=22, salary=null), 
Employee(id=2, lastName=Jerry, email=jerry@apache.mybatis-Plus.com, gender=0, age=25, salary=null), 
Employee(id=3, lastName=小泽老师, email=xz@sina.com, gender=0, age=23, salary=null), 
Employee(id=4, lastName=王老师, email=cls@sina.com, gender=0, age=27, salary=null), 
Employee(id=12, lastName=宋老湿, email=sls@apache-mybatisPlues.com, gender=1, age=36, salary=null)]

查看sql

SELECT id,last_name AS lastName,email,gender,age FROM tbl_employee 

2.5、通过selectList方法查询操作

package org.apache.test;


import com.baomidou.mybatisplus.mapper.EntityWrapper;
import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");
	/**
	 * AR 查询操作
	 */
	@Test
	public void testARSelect() {
		Employee employee = new Employee();


				List<Employee > emps=
				employee.selectList(new EntityWrapper<Employee>().like("last_name", "老师"));
		System.out.println(emps);

	}
}

 打印输出

数据表信息

 

若想统计为0的数据查询,可以采用该代码

package org.apache.test;


import com.baomidou.mybatisplus.mapper.EntityWrapper;
import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");

	/**
	 * AR 查询操作
	 */
	@Test
	public void testARSelect() {
		Employee employee = new Employee();
		Integer result = employee.selectCount(new EntityWrapper<Employee>().eq("gender", 0));
		System.out.println("result: " +result );
	}

}

打印输出:

数据表信息

2.6、通过deleteById方法完成删除操作 

package org.apache.test;


import com.baomidou.mybatisplus.mapper.EntityWrapper;
import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");

	/**
	 * AR 删除操作
	 *
	 * 注意: 删除不存在的数据 逻辑上也是属于成功的.
	 */
	@Test
	public void testARDelete() {

		Employee employee = new Employee();
		boolean result = employee.deleteById(13);
		System.out.println("result:" +result );

	}
}

打印输出:

删除前:

 

 删除后:

第二种情况:通过条件删除

package org.apache.test;


import com.baomidou.mybatisplus.mapper.EntityWrapper;
import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");
	/**
	 * AR 删除操作
	 *
	 * 注意: 删除不存在的数据 逻辑上也是属于成功的.
	 */
	@Test
	public void testARDelete() {
		Employee employee = new Employee();
		boolean result = employee.delete(new EntityWrapper<Employee>().like("last_name", "小"));
		System.out.println(result );

	}
}

 打印输出:

删除前:

  删除后:

2.7、通过selectPage方法完成分页复杂操作 

package org.apache.test;


import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import org.apache.mybatisplus.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;


public class TestMP01 {
	private ApplicationContext ioc =
			new ClassPathXmlApplicationContext("applicationContext.xml");
	/**
	 * AR  分页复杂操作
	 */
	@Test
	public void  testARPage() {
		Employee employee = new Employee();
		Page<Employee> page = employee.selectPage(new Page<>(1, 1),
				new EntityWrapper<Employee>().like("last_name", "老"));
		List<Employee> emps = page.getRecords();
		System.out.println(emps);
	}
}

打印输出

数据表信息

3、AR小结 

(1)AR 模式提供了一种更加便捷的方式实现 CRUD 操作,其本质还是调用的 Mybatis 对应的方法,类似于语法糖 语法糖是指计算机语言中添加的某种语法,这种语法对原本语言的功能并没有影响. 可以更方便开发者使用,可以避免出错的机会,让程序可读性更好

(2)到此,我们简单领略了 Mybatis-Plus 的魅力与高效率,值得注意的一点是:我们提供了强大的代码生成器,可以快速生成各类代码,真正的做到了即开即用 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值