0
点赞
收藏
分享

微信扫一扫

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 新建项目

Spring Boot整合tk.Mapper/通用Mapper_java

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);
}



举报

相关推荐

0 条评论