快速开始
我们将通过一个简单的 Demo 来小试牛刀,这里我们以 SpringBoot 项目为例(假设你对 SpringBoot 有所了解)
假设我们已存在一张 User 表, 表的结构和数据如下
id | name | age | mobile |
---|---|---|---|
1 | Rock0 | 20 | 18175670125 |
2 | Rock1 | 21 | 18175670126 |
3 | Rock2 | 22 | 18175670127 |
4 | Rock3 | 24 | 18175670128 |
5 | Rock4 | 30 | 18175670129 |
创建数据表结构
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id INT(11) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
mobile VARCHAR(11) NULL DEFAULT NULL COMMENT '手机号码',
PRIMARY KEY (id)
);
导入数据脚本
DELETE FROM user;
INSERT INTO user (id, name, age, mobile) VALUES
(1, 'Rock0', 20, '18175670125'),
(2, 'Rock1', 21, '18175670126'),
(3, 'Rock2', 22, '18175670127'),
(4, 'Rock3', 24, '18175670128'),
(5, 'Rock4', 30, '18175670129');
构建工程
创建一个空的 Spring Boot 工程(工程将以 MySQL 作为默认数据库进行演示)
可以使用 Spring Initializer 快速初始化一个 Spring Boot 工程
添加依赖
<dependency>
<groupId>org.rockyang</groupId>
<artifactId>mybatis-kits-spring-boot-starter</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
其中 druid-spring-boot-starter
数据库连接池,并不是一定需要,其实你只要引入 mybatis-kits-spring-boot-starter
这一个构件就可以了。
配置
在 application.properties
配置文件中添加 MySQL 数据库的相关配置:
# 服务器编号,用来辅助生成分布式 ID
server.port=8080
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis-kits-demo?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=20
# open debug mode
logging.level.org.rockyang.mybatis.boot.demo.mapper=DEBUG
如果部署多台服务器的话,需要配置 Snowflake
的 workerId(服务器ID) 和 dataCenterId(数据中心ID),已保证在不同机器生成的 ID 不会重复
配置方法也比较简单,在 resources
目录下新建 snowflake.properties
,添加以下配置参数:
# 工作机器ID(0~31)
snowflake.workId=1
# 数据中心ID(0~31)
snowflake.dataCenterId=1
在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:
@SpringBootApplication
@MapperScan("org.rockyang.mybatis.boot.demo.mapper")
public class MybatisDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisDemoApplication.class, args);
}
}
Note:
这里注意需要把 org.rockyang.mybatis.boot.demo.mapper
替换成你实际的 mapper 文件路径
创建实体类 User (可以通过 mybatis-generator 工具生成)
Note:
实体类必须继承 org.rockyang.mybatis.plus.support.BaseModel
public class User extends BaseModel<Integer> {
private String name;
private int age;
private String mobile;
public User() {}
public User(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getMobile() {
return mobile;
}
public User setMobile(String mobile) {
this.mobile = mobile;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
现在,实现 User 表的 CRUD 操作我们只需创建一个对应的 Mapper 接口就行了。
public interface UserMapper extends BaseMapper<User> { }
开始使用
@RunWith(SpringRunner.class)
@SpringBootTest
public class MapperTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSearchUser() {
System.out.println(("----- search all users ------"));
List<User> userList = userMapper.search();
for (User user : userList) {
System.out.println(user);
}
}
}
控制台输出:
User(id=1, name=Rock0, age=20, mobile=18175670125)
User(id=2, name=Rock1, age=21, mobile=18175670126)
User(id=3, name=Rock2, age=22, mobile=18175670127)
User(id=4, name=Rock3, age=24, mobile=18175670128)
User(id=5, name=Rock4, age=30, mobile=18175670129)
小结
我们通过简单的几个步骤,就实现了对 User 数据表的 CRUD 功能,其实如果你是单表查询的,除非是特别复杂的查询,否则你连 mapper XML 文件都 不用写,像使用 PHP 操作数据库一样简单。我们这里只是测试了一个查询方法,如果想要体验更多的 CRUD 功能演示请参考文档 CRUD 接口
Mybatis-Kits 项目内部提供了 Sample 工程:spring-boot-starter-demo