先看一下和MyBatis 不同点说明:

    @GetMapping("/select_sql")
public Object getUserBySql() {
User user=new User(1L);
User selectUser=user.selectById();
user.deleteById(user);
return userService.selectListBySQL(); //普通走法
}

最大的不同点在entity层直接可以调用superEntity,直接实现默认的一些增删改查

/**
* 用户表
*/
@SuppressWarnings("serial")
public class User extends SuperEntity<User> { /**
* 名称
*/
private String name;
/**
* 年龄
*/
private AgeEnum age;
/**
* 这里故意演示注解可无
*/
@TableField("test_type")
@TableLogic
private Integer testType; /**
* 测试插入填充
*/
@TableField(fill = FieldFill.INSERT)
private Date testDate; private Long role;
private PhoneEnum phone; public User() {
}
public User(Long id){
this.setId(id);
} public User(Long id, String name, AgeEnum age, Integer testType) {
this.setId(id);
this.name = name;
this.age = age;
this.testType = testType;
} public User(String name, AgeEnum age, Integer testType) {
this.name = name;
this.age = age;
this.testType = testType;
} public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
} public AgeEnum getAge() {
return this.age;
} public void setAge(AgeEnum age) {
this.age = age;
} public Integer getTestType() {
return this.testType;
} public void setTestType(Integer testType) {
this.testType = testType;
} public Long getRole() {
return this.role;
} public void setRole(Long role) {
this.role = role;
} public PhoneEnum getPhone() {
return this.phone;
} public void setPhone(PhoneEnum phone) {
this.phone = phone;
} public Date getTestDate() {
return testDate;
} public void setTestDate(Date testDate) {
this.testDate = testDate;
} @Override
public String toString() {
return "User [id=" + this.getId() + ", name=" + name + ", age=" + age
+ ", testType=" + testType + ", testDate="
+ testDate + ", role=" + role + ", phone=" + phone + "]";
}
SuperEntity 继承Model  ,Model默认实现了简单的增删改查,不需要再去实现mapper层。
/**
* 演示实体父类
*/
public class SuperEntity<T extends Model> extends Model<T> { /**
* 主键ID , 这里故意演示注解可以无
*/
@TableId("test_id")
private Long id;
private Long tenantId; public Long getId() {
return this.id;
} public void setId(Long id) {
this.id = id;
} public Long getTenantId() {
return tenantId;
} public SuperEntity setTenantId(Long tenantId) {
this.tenantId = tenantId;
return this;
} @Override
protected Serializable pkVal() {
return this.id;
}
}

2.对于原生service层改造实现,默认实现baseMapper, baseMapper 默认实现了mapper的常规使用写法方式。

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { @Override
public boolean deleteAll() {
return retBool(baseMapper.deleteAll());
} @Override
public List<User> selectListBySQL() {
return baseMapper.selectListBySQL();
} @Override
public List<User> selectListByWrapper(Wrapper wrapper) {
return baseMapper.selectListByWrapper(wrapper);
//baseMapper.selectma
}
}

3.UserMapper 继承 superMapper,而superMapper继承baseMapper,你可以把一些公共的方法放在superMapper里,从而实现公用。

/**
* User 表数据库控制层接口
*/
public interface UserMapper extends SuperMapper<User> { /**
* 自定义注入方法
*/
int deleteAll(); @Select("select test_id as id, name, age, test_type from user")
List<User> selectListBySQL(); List<User> selectListByWrapper(@Param("ew") Wrapper wrapper); }

最后的XML是一些不常用的sql可以写在这里给予调用。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.baomidou.springboot.mapper.UserMapper"> <!-- 通用查询结果列 -->
<sql id="Base_Column_List">
test_id AS testId, name, age, test_type AS testType, role, phone
</sql> <delete id="deleteAll">
DELETE FROM USER
</delete> <select id="selectListByWrapper" resultType="com.baomidou.springboot.entity.User">
SELECT * FROM USER
<!-- 判断 wrapper 是否为空 emptyOfWhere -->
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

可以看到他们的关系是一层一层过滤设计的,用了公共代码方便了公用,也达到了解耦合。

MyBatis-Plus 使用说明介绍的更多相关文章

  1. MyBatis注解Annotation介绍及Demo

     MyBatis注解Annotation介绍及Demo 2014-04-21 17:09:55 标签:Mybatis Annotation 注解 ResultMap SqlBuilder 原创作品,允 ...

  2. 一、mybatis的插件介绍

    摘自:https://www.cnblogs.com/qm-article/p/11785350.html mybatis的插件机制   一.mybatis的插件介绍 关于mybatis的插件,我想大 ...

  3. Mybatis通用Mapper介绍和使用

    Mybatis通用Mapper介绍与使用 前言 使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL. ...

  4. Mybatis拦截器介绍

    拦截器的一个作用就是我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可以在执行这些被拦截的方法时执行自己的逻辑而不再执行被拦截的方法.Mybatis拦截器设计的一个初 ...

  5. Mybatis(一)入门介绍

    一.MyBatis的发展 MyBatis 是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到google code, 并且改名M ...

  6. 详解Mybatis通用Mapper介绍与使用

    使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL.而且,当数据库表结构改动时,对应的所有SQL以及 ...

  7. MyBatis(1)优点&介绍&工程

    本次全部学习内容:MyBatisLearning 一:jabc的相关说明: jdbc编程步骤: 加载数据库驱动 创建并获取数据库链接 创建jdbc statement对象 设置sql语句 设置sql语 ...

  8. Mybatis拦截器介绍及分页插件

    1.1    目录 1.1 目录 1.2 前言 1.3 Interceptor接口 1.4 注册拦截器 1.5 Mybatis可拦截的方法 1.6 利用拦截器进行分页 1.2     前言 拦截器的一 ...

  9. jdbc、Mybatis、Hibernate介绍(非原创)

    文章大纲 一.jdbc介绍二.Mybatis介绍三.Hibernate介绍四.jdbc.Mybatis.Hibernate比较五.参考文章   一.jdbc介绍 1. jdbc编程步骤 (1)加载数据 ...

  10. MyBatis注解Annotation介绍及Demo(转)

    MyBatis可以利用SQL映射文件来配置,也可以利用Annotation来设置.MyBatis提供的一些基本注解如下表所示. 注解 目标 相应的XML 描述 @CacheNamespace 类 &l ...

随机推荐

  1. SYN2101型 NTP网络时间服务器

    SYN2101型  NTP网络时间服务器   时钟校准服务器时间 ntp服务器ntp时间校准服务器使用说明视频链接: http://www.syn029.com/h-pd-56-0_310_1_-1. ...

  2. 自定义vue全局组件use使用、vuex的使用

    自定义vue全局组件use使用(解释vue.use()的原理)我们在前面学习到是用别人的组件:Vue.use(VueRouter).Vue.use(Mint)等等.其实使用的这些都是全剧组件,这里我们 ...

  3. 系统学习 Java IO (十二)----数据流和对象流

    目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用 ...

  4. composer简述

    1.composer是一个php依赖管理工具,而不是一个包管理器.怎么来理解呢?就像在是在电脑中安装了个电脑管家,在电脑管家的软件管理中下载和更新软件,其实这个电脑管家只是一个管理工具,而真正的软件可 ...

  5. 字节跳动Java研发面试99题(含答案):JVM+Spring+MySQL+线程池+锁

    JVM的内存结构 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 1. Java虚拟机栈:线程私有:每个方法在执行的时候会创建一个栈帧,存储了局部变量表, ...

  6. Linux命令分类汇总(1~6)

    Linux命令分类汇总 序号 命令 参数 英文释义 功能说明 (一)线上查询及帮助命令(2个) 1 man manual 查看命令帮助,命令的词典,还有info 2 help h 查看Linux内置命 ...

  7. (H5)canvas实现裁剪图片和马赛克功能,以及又拍云上传图片

    1.核心功能 此组件功能包含: 图片裁剪(裁剪框拖动,裁剪框改变大小): 图片马赛克(绘制马赛克,清除马赛克): 图片预览.图片还原(返回原图.返回处理图): 图片上传(获取签名.上传图片). 2.核 ...

  8. kubernetes实战之部署一个接近生产环境的consul集群

    系列目录 前面我们介绍了如何在windows单机以及如何基于docker部署consul集群,看起来也不是很复杂,然而如果想要把consul部署到kubernetes集群中并充分利用kubernete ...

  9. 前端Web浏览器基于Flash如何实时播放监控视频画面(一)之获取监控摄像头的RTSP流

    本片文章只是起到抛砖引玉的作用,能从头到尾走通就行,并不做深入研究.为了让文章通俗易懂,尽量使用白话描述. 0x001: 获取 现在市场上普见的摄像头都支持RTSP协议,如果你不懂什么是RTSP协议, ...

  10. 带你全面了解高级 Java 面试中需要掌握的 JVM 知识点

    目录 JVM 内存划分与内存溢出异常 垃圾回收算法与收集器 虚拟机中的类加载机制 Java 内存模型与线程 虚拟机性能监控与故障处理工具 参考 带你全面了解高级 Java 面试中需要掌握的 JVM 知 ...