通用mapper

概念

使用Mybatis时,大的问题是,要写大量的重复SQL语句在xml文件中,除了特殊的业务逻辑SQL语句之外,还有大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。这大量增 加了程序员的负担。避免重复书写CRUD映射的框架有两个

  • 通用mybatis(tk mybatis)
  • mybatis plus,通能更加强大

依赖

通用Mapper的作者也为自己的插件编写了启动器,我们直接引入即

  <!-- 添加了tkmybatis的启动器依赖可以注释掉原本mybatis的依赖--><!--<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency>--><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.0.2</version></dependency>

实体类

tk mybatis 实体类使用的注解是jpa注解

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString@Table
public class Admin {private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private int id;private String account;private String password;
}

注意事项:

  1. 默认表名=类名,字段名=属性名
  2. 表名可以使用 @Table(name = “tableName”) 进行指定 ,如果表名和实体类名相同可以不加name属性
  3. @Column(name = “fieldName”) 指定 ,如果字段名和属性名相同可以不加属性name
  4. 使用 @Transient 注解表示跟字段不进行映射
  5. 主键id必须要 @Id 使用指定,以及@GeneratedValue(strategy = GenerationType.IDENTITY)表示主键自增策略

不需要做任何配置就可以使用了

持久层

import com.kaikeba.entity.Admin;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;import java.util.List;@Repository
public interface AdminMapper extends Mapper<Admin> {@Select("select * from admin")public List<Admin> findAll();}

1、必须继承 tk mybatis提供的Mapper类,以及使用需要操作的bean类作为泛型参数
2、继承完也可以自行添加数据库操作

一旦继承了Mapper,继承的Mapper就拥有了Mapper所有的通用方法:

Select

方法: List select(T record);
说明:根据实体中的属性值进行查询,查询条件使用等号

方法: T selectByPrimaryKey(Object key);
说明:根据主键字段进行查询,方法参数必须包含完整的主键属性, 查询条件使用等号

方法: List selectAll();
说明:查询全部结果,select(null)方法能达到同样的效果

方法: T selectOne(T record);
说明:根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异 常,查询条件使用等号

方法: int selectCount(T record);
说明:根据实体中的属性查询总数,查询条件使用等号 Insert

方法: int insert(T record);
说明:保存一个实体,null的属性也会保存,不会使用数据库默认值 方法: int insertSelective(T record); 说明:保存一个实体,null的属性不会保存,会使用数据库默认值

Update

方法: int updateByPrimaryKey(T record);
说明:根据主键更新实体全部字段,null值会被更新

方法: int updateByPrimaryKeySelective(T record);
说明:根据主键更新属性不为null的值

Delete

方法: int delete(T record);
说明:根据实体属性作为条件进行删除,查询条件使用等号

方法: int deleteByPrimaryKey(Object key);
说明:根据主键字段进行删除,方法参数必须包含完整的主键属性

Example方法

方法: List selectByExample(Object example);
说明:根据Example条件进行查询 重点:这 个查询支持通过 Example 类指定查询列,通过 selectProperties 方法指定查询列

方法: int selectCountByExample(Object example);
说明:根据Example条件进行查询总数

方法: int updateByExample(@Param(“record”) T record, @Param(“example”) Object example);
说明:根据 Example条件更新实体 record 包含的全部属性,null值会被更新

方法: int updateByExampleSelective(@Param(“record”) T record, @Param(“example”) Object example);
说明:根据Example条件更新实体 record 包含的不是null的属性值

方法: int deleteByExample(Object example);
说明:根据Example条件删除数据

启动类

注意:必须使用tk mybatis的MapperScan

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;@SpringBootApplication
@MapperScan("com.kaikeba.mapper")
public class SpringbootMybatisApplication {public static void main(String[] args) {SpringApplication.run(SpringbootMybatisApplication.class, args);}}

SpringBoot整合tkMybatis基础教程相关推荐

  1. SpringBoot整合Quartz--使用/教程/实例

    原文网址:SpringBoot整合Quartz--使用/教程/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 本文用实例介绍quartz的用法. quartz与spring自带的定时最大的区别之处 ...

  2. Springboot整合Rocketmq系列教程

    Springboot整合Rocketmq系列教程 本教程是基于Springboot2.6.3整合Rocketmq5.0,其中涉及了Rocketmq的安装,消息的发送及消费的代码实现. 本文不会对roc ...

  3. springboot整合mysql5.7_详解SpringBoot整合MyBatis详细教程

    1. 导入依赖 首先新建一个springboot项目,勾选组件时勾选Spring Web.JDBC API.MySQL Driver 然后导入以下整合依赖 org.mybatis.spring.boo ...

  4. SpringBoot整合TkMybatis(通用mapper)

    TkMybatis目录 SpringBoot整合TkMybatis(通用mapper) SpringBoot整合TkMybatis(通用mapper)(自定义xml文件) 源码 GitHub: htt ...

  5. Springboot 整合tk-mybatis , 妈妈,我再也不想敲CRUD的代码了!

    前言 码农这一生,做的最多的四件事,不是吃喝玩乐,而是  增加(Create).检索(Retrieve).更新(Update)和删除(Delete)  . 泪目. 为何我要写这篇文章,是有感而发,请看 ...

  6. java springboot整合zookeeper入门教程(增删改查)

    java springboot整合zookeeper增删改查入门教程 zookeeper的安装与集群搭建参考:https://www.cnblogs.com/zwcry/p/10272506.html ...

  7. springboot整合redis详细教程

    spring boot 整合 redis 详细教程 注意:本次实验环境 是将 redis 安装在 CentOS7.x-86_x64 中 教程中用到的软件(VMware Workstation Pro. ...

  8. springboot整合tk-mybatis框架搭建

    项目结构截图放在文末了,图片太大怕影响观看体验,想模仿搭建项目的可以拉到底看下截图再动手不迟. 第一步:依赖 <properties><project.build.sourceEnc ...

  9. SpringBoot整合MyBatis详细教程~

    目录 1. 导入依赖 2. 连接数据库 3. 编写数据库配置信息 4. 编写pojo实体类 5. 编写mapper接口 6. 编写mapper.xml 7. 编写controller 8. 测试 1. ...

  10. SpringBoot整合Elasticsearch(一)

    SpringBoot整合Elasticsearch 基础环境 SpringBoot 版本 : 2.4.0 ES 版本: 7.9.3 Kibana版本: 7.9.3 SpringBoot内置Tomcat ...

最新文章

  1. mysql select 区分大小写,MySql查询不区分大小写解决方案(两种)
  2. 程序员从入门到升级,或许可以看一看这几个公众号
  3. C语言学习趣事_你不知道的C语言应用
  4. Untiy中的数据平滑处理
  5. atitit.交换机 汇聚上联、网络克隆和标准共享的原理与区别
  6. nest.js实战之集成Linkedin登录
  7. AcWing 741. 斐波那契数列
  8. 计算机处理器的hz越大越好,cpu频率是什么意思(处理器频率是越高越好吗)
  9. Docker 错误 “port is already allocated” 解决方法
  10. 无线网络打印机服务器安装步骤,网络打印机安装步骤
  11. Dreamweaver 2020 安装教程
  12. C语言实现组合式的计算
  13. 4x root 红米_红米Note 4X root教程 红米Note4X获取root权限的方法
  14. 蛙蛙推荐:如何编写高质量的python程序
  15. Java高频重点面试题,看这一篇就够了。
  16. 单片机(keil c51):BCD码转化为二进制(以4位BCD码举例,依此类推)
  17. icloud 照片同步_如何在线查看iCloud照片
  18. 关于电脑DNS(域名系统)访问不了网页的解决方法
  19. Revit 2020发布
  20. android显示ios emoji表情符号,教程:在 Android 上也能用 iOS 新 Emoji 表情

热门文章

  1. 求解平稳分布matlab,生灭过程的拟平稳分布
  2. ios自建服务器降级,苹果系统怎样降级?iOS11降级至iOS10的方法
  3. c语言题库-礼炮声响次数,c语言题库与答案精华版资料.doc
  4. Python基础知识详解(十)小结,用python实现教师信息管理系统
  5. Subclipse使用说明
  6. 跨网页的新手引导_用户体验之如何设计一个完美的新手引导流程?(附带案例)...
  7. 【PotPlayer】敲好用的本地视频播放器
  8. 获取随机经纬度、经纬度范围
  9. 如何成为技术大牛 ?
  10. 简述SD卡的工作原理(四)