如何一文学懂 SpringBoot 整合通用 Mapper 和逆向工程生成代码(Mybatis)

1、通用 Mapper 介绍

  • 通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。
  • 极其方便的使用MyBatis单表的增删改查。
  • 支持单表操作,不支持通用的多表联合查询。
  • 原生 Mapper 的难点:
  1. mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改
  2. 需要自己实现sql分页,select * from table where . . . limit 1,3。自己手写分页,除了传参page、pageSize,还需要返回条目总数count。
  3. 数据库可移植性差:如果项目更换数据库,比如oracle–>mysql,mapper.xml中的sql要重新写,因为Oracle的PLSQL 和mysql 支持的函数是不同的。
  4. 生成的代码量过大。
  5. 批量操作,批量插入,批量更新,需要自写。
  • 这个东西使用后,会不会降低我们的代码执行效率呢?
       其实他的原理就是通过Mybatis的拦截器原理,利用反射机制拼出的 XML 形式的动态 SQL 然后去执行,并且内部对生成的 SQL 实现有缓存机制,所以你说代码时间消耗肯定也会有一些,但是这是很小很小的,再者在现在项目中,对于提供给前端的接口,通常都会利用些组件进行访问加速(毕竟直接从数据中检索不如在内存中来的快些),比如:redis、memcache、elastic search、solr 等,所以执行效率问题是可以避免或忽略的。
  • 如果有些方法不想使用,例如:用户的接口服务不能使用删除方法也不想暴漏出来,该怎么办呢?
      我们通常会定义增、删、改、查四个基础 Mapper 接口,之后可以按需要引入进行使用,其实即使你使用了公共的 CrudMapper(代表增删改查都在一起的类)也没有问题,只要你在 service 层不要放出删除方法也是可以的。

2、快速使用通用 Mapper

2.1、创建表、实体类和 Mapper 接口

表代码:

CREATE TABLE `table_emp` (
	`emp_id` int NOT NULL AUTO_INCREMENT ,
	`emp_name` varchar(500) NULL ,
	`emp_salary` double(15,5) NULL ,
	`emp_age` int NULL ,
	PRIMARY KEY (`emp_id`)
);
INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('tom', '1254.37', '27');
INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('jerry', '6635.42', '38');
INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('bob', '5560.11', '40');
INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('kate', '2209.11', '22');
INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('justin', '4203.15', '30');

实体类代码:
  考虑到基本数据类型在 Java 类中都有默认值,会导致 MyBatis 在执行相关操作时很难判断当前字段是否为 null,所以如阿里开发手册所言,Java 实体类尽量不要使用基本数据类型,都使用对应的包装类型。

@Data // lombok 插件,自动生成 get、set 等方法
public class Employee {
   
	private Integer empId;
	private String empName;
	private Double empSalary;
	private Integer empAge;
}

操作数据库的 Mapper 接口代码:

public interface EmployeeMapper {
   

}

2.2、集成通用 Mapper

在 pom 文件中引入通用 Mapper 的启动器

<dependency>
	<groupId>tk.mybatis</groupId>
	<artifactId>mapper-spring-boot-starter</artifactId>
	<version>2.0.3</version>
</dependency>

2.3、配置扫描包

在 SpringBoot 启动类上面添加扫描包注解。此时用的是通用 Mapper 的扫描注解(其与原生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值