Spring Boot整合tk.Mapper/通用Mapper

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Spring Boot整合tk.Mapper/通用Mapper

1 简介

通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。

极其方便的使用MyBatis单表的增删改查。

支持单表操作,不支持通用的多表联合查询

通用 Mapper 支持 Mybatis-3.2.4 及以上版本。

简介: 在早期项目文档中有过类似主题的内容,但是最近我自己看文档的时候发现一个问题,文档虽然很详细,但是并不适合初次接触的人。为了方便第一次听说,第一次尝试的开发人员了解通用 Mapper,补充此文档。

Gitee地址:https://gitee.com/free/Mapper

2 Spring Boot整合通用Mapper

2.1 新建项目

2.2 配置文件和数据库/实体类

配置文件:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test
    username: root
    password: 12345
server:
  port: 8888

数据库:

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8

实体类:

/**
 * @desc: Student实体类
 * @author: YanMingXin
 * @create: 2021/8/3-10:26
 **/
/**
 * 常用注解:
 *
 * @Table 对应数据库的表, 如果不写默认是类名首字母小写作为表名,比Member,不写数据库表默认指向member
 * @Column: 的属性name对应数据库表的字段,如果不写默认是驼峰下划线匹配,比如private Long myId,如果不写得话,就是对应数据库表字段my_id
 * @Id: 把当前字段作为数据库主键使用,匹配数据库主键。如果不贴此注解,在某些查询语句的时候会把表字段一起作为联合主键查询
 * @GeneratedValue 让通用mapper在执行insert操作之后将自动生成的主键值回写到当前实体对象对应的属性当中
 */
@Data
@Accessors(chain = true)
@Table(name = "student") //指定表名
public class Student {
    @Id
    private Integer id;
    private String name;
    private Integer age;
}
2.3 添加依赖
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<!--tkmybatis -->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.1.5</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.9</version>
</dependency>
2.4 进行CRUD
@SpringBootTest
class SpTkMapperApplicationTests {
    @Resource
    private StudentMapper studentMapper;
    @Test
    void insertTest() {
        Student student = new Student()
                .setId(3)
                .setName("zs")
                .setAge(123);
        studentMapper.insert(student);
    }
    @Test
    void updateTest() {
        Student student = new Student()
                .setId(1)
                .setName("zs_update")
                .setAge(123);
        //必须在实体类拥有@Id之后才能使用该方法
        studentMapper.updateByPrimaryKey(student);
    }
    @Test
    void deleteTest() {
        studentMapper.deleteByPrimaryKey(1);
    }
    @Test
    void selectTest() {
        List<Student> students = studentMapper.selectAll();
        System.out.println(students);
    }
}
2.5 使用Example进行模糊查询
@Test
void likeTest() {
    Example example = new Example(Student.class);
    Example.Criteria criteria = example.createCriteria();
    //需要自己加上 % 或 _
    criteria.andLike("name", "%zs%");
    List<Student> students = studentMapper.selectByExample(example);
    System.out.println(students);
}


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
Java 测试技术
SpringBoot整合单元测试&&关于SpringBoot单元测试找不到Mapper和Service报java.lang.NullPointerException的错误
SpringBoot整合单元测试&&关于SpringBoot单元测试找不到Mapper和Service报java.lang.NullPointerException的错误
|
4月前
|
Java 数据库连接 API
SpringBoot【问题 01】借助@PostConstruct解决使用@Component注解的类用@Resource注入Mapper接口为null的问题(原因解析+解决方法)
SpringBoot【问题 01】借助@PostConstruct解决使用@Component注解的类用@Resource注入Mapper接口为null的问题(原因解析+解决方法)
76 0
|
9月前
|
SQL druid 前端开发
让SpringBoot不需要Controller、Service、DAO、Mapper,卧槽!这款工具绝了!
让SpringBoot不需要Controller、Service、DAO、Mapper,卧槽!这款工具绝了!
|
10月前
|
SQL 数据库
springboot+mybatis,mapper调用查询的数据为空,报空指针异常
springboot+mybatis,mapper调用查询的数据为空,报空指针异常
672 0
|
12月前
|
Java 数据库连接 开发者
Mybatis是如何向Spring注册Mapper的?
有时候我们需要自行定义一些注解来标记某些特定功能的类并将它们注入Spring IoC容器。比较有代表性的就是Mybatis的Mapper接口。假如有一个新的需求让你也实现类似的功能你该如何下手呢?今天我们就从Mybatis的相关功能入手来学习其思路并为我所用。
|
Java 数据库连接 数据库
Spring Boot整合tk.Mapper/通用Mapper
Spring Boot整合tk.Mapper/通用Mapper
|
SQL Java 数据库连接
spring整合通用mapper
spring整合通用mapper
86 0
spring整合通用mapper
|
XML Java 数据库连接
Eclipse spring boot MyBatis1.4插件安装及自动生成xml、domain、mapper
在使用Eclipse 开发spring boot 时自动生成对象、mapper接口、domain,在此备忘方便后面查阅 新版本的mybatis会作一些调整,具体的操作方式可看我的另外一篇文章: https://developer.aliyun.com/article/1168902?spm=a2c6h.26396819.creator-center.12.12ed3e18lXUFoo
482 0
Eclipse spring boot MyBatis1.4插件安装及自动生成xml、domain、mapper
|
15天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
37 0