先看一下和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>

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

最新文章

  1. 「译」JUnit 5 系列:条件测试
  2. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
  3. js设置、获取单值cookie和多值cookie
  4. PHP的基本排序算法
  5. ACM:POJ 2739 Sum of Consecutive Prime Numbers-素数打表-尺取法
  6. hdu 4010 Query on The Trees LCT
  7. Instruments --- 内存泄露
  8. Asp.net简单实现forms验证
  9. 关于UtilTimerStack类的使用--XWork2、Struts2内置性能诊断类
  10. RPC远程过程调用机制底层原理
  11. spring调用mongodb
  12. 【alpha阶段】第十次Scrum Meeting
  13. 搭建SpringBoot+dubbo+zookeeper+maven框架(三)
  14. centos7-网络连接
  15. lfs(systemv版本)学习笔记-第4页
  16. Linux&amp;docker&amp;cgroups
  17. elasticsearch ingest node and docker-cluster---quey using sql]
  18. springboot-28-security(一)用户角色控制
  19. 微服务Kong(九)——认证参考
  20. mongodb的存储引擎

热门文章

  1. 解除.NET中虚拟路径的疑惑
  2. python中的基本数据类型之字典
  3. 使用spring容器干掉if-else
  4. 曹工说Tomcat1:从XML解析说起
  5. C++几个细节(1)
  6. java线程的简单实用
  7. Hadoop —— 单机环境搭建
  8. HBase 学习之路(九)——HBase容灾与备份
  9. Spring5深度源码分析(三)之AnnotationConfigApplicationContext启动原理分析
  10. 一套简单的web即时通讯——第三版