在介绍通用Mapper之前
让我们先来了解一下持久层发展历程
持久层发展历程
1.JDBC.操作数据库最快
2.数据库链接池.
解决开关链接,导致数据库执行效率低(sql都需要手写)
3.JPA思想
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.
概括:以面向对象的方式,操作数据库.
4.Hibernate
Hiberndate将JPA思想最终实现.以后操作数据库,程序员几乎不需要写sql.统统都是面向对象的形式操作.并且实现了全自动的ORM(对象关系映射)
对象-----自动生成SQL,交给数据库. 入
数据库中的数据----------对象 出
例子:hibernate框架实现单表映射时,效率很高.如果遇到多表关联时效率低.
Sql编辑:HQL语句解决多表关联问题.实用性弱.配置文件特别复杂.(一对一/一对多/多对多)
Sql特别的冗余.效率低
5.Mybatis
实现半自动的ORM.
程序员自己编辑Sql语句,实现入库操作.
查询时,返回的数据就是封装好的对象.
效率高:自己编辑的sql效率最高
弊端:再简单的sql也需要自己手动编辑!!!
通用Mapper插件
1.介绍
通用Mapper是基于Mybatis开发的一款简化单表操作的一款插件.可以实现单表自动CURD操作.以后程序员再也不需要写简单的sql.同时实现了JPA思想.
核心:用户操作是对象!!!
2.通用Mapper实现原理
1.对象与数据库中的表一一映射.
2.对象中的属性与表中的字段一一映射.
3.定义一个公共的接口,在其中定义公共的CRUD操作.
4.通过实现类实现接口中的方法.将用户传递的对象最终转化为SQL语句.
新增案例:
insert into 表名(字段名……) values(字段值……)
删除案例:
delete from 表名 where id = 属性值 (值不为null)
3.添加jar包
<dependency>
<groupId>com.github.abel533</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
4.编辑POJO与表映射关系
5.添加插件
<plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
<!--主键自增回写方法,默认值MYSQL,详细说明请看文档 -->
<property name="IDENTITY" value="MYSQL" />
<!--通用Mapper接口,多个通用接口用逗号隔开 自己定义接口路径 -->
<property name="mappers" value="com.jd.co.mapper.SysMapper" />
</plugin>
</plugins>
6.定义公共的接口
1.定义接口
2.继承接口