先看一下和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. 搜索栏+collectionView实现

      效果图如下:   1.h文件声明方法:   @interface IDSGameRoomSearchPage : UIView @property (nonatomic,weak) BaseVie ...

  2. Socket2实现tcp端口扫描

    主要的界面如下: 主要代码如下: //对于每一个线程,传过去的参数 typedef struct ThreadParamStruct { CString strIP; //要扫描的IP地址 UINT ...

  3. [2017.02.06] 阅读《Effective Morden C++》

  4. 深入理解Java G1垃圾收集器

    本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践. 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么 ...

  5. maven项目或者SpringBoot项目启动时报错在本地仓库中找不到jar包的解决办法

    经常遇到项目检出来后是导入开发工具eclipse中pom文件出错问题,项目启动时遇到了一些列的jar包找不到的问题,所以换个开发平台到IDEA以为会好些,结果同样的问题还是会出现的,为了找到具体的解决 ...

  6. Python自学day-5

    电影推荐:     阿甘正传     辛德勒名单     肖申克的救赎     勇敢的心     角斗士     美国丽人     教父     指环王     钢琴师     血钻     战争之王 ...

  7. 【React】存储全局数据

    参考链接:https://segmentfault.com/a/1190000012057010?utm_source=tag-newest webstorage webstorage是本地存储,存储 ...

  8. Mysql索引优化之索引的分类

    Mysql的历史 简单回顾一下Mysql的历史,Mysql 是一个关系型数据库管理系统,由瑞典 Mysql AB 公司开发,目前属于 Oracle 公司.关系型数据库​将数据保存在不同的表中,而不是将 ...

  9. 10月18日 JS begant

    1.JS的本质就是处理数据,数据来自后台的数据库,所以变量起到了临时存储的作用, ES制定了js的数据类型 2.数据类型有哪些? (1)字符串 String (2)数字  Number (3)布尔 B ...

  10. Python与C/C++相互调用

    参考链接:https://www.cnblogs.com/yanzi-meng/p/8066944.html