本人的MyBatis系列教程均采用当下流行的SpringBoot + MyBatis配置文件版的组合进行讲解,其他组合方式不在本教程讨论范围内。此外,需要学习者有一定的SpringBoot基础,如对此不太了解,可移步本人教程进行SpringBoot的学习。另外,需要对SQL语句有一定的了解,不要求掌握的多好,但基本的增删改查还是要会的。
SDK版本:1.8
MySQL版本:5.7
开发工具:IntelliJ IDEA
接口调试工具:Postman
演示数据库:study-mybatis(请自行创建)
请运行以下sql脚本导入本篇教程所用数据表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(100) DEFAULT NULL COMMENT '姓名',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`birthday` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '生日',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
BEGIN;
INSERT INTO `user` VALUES (1, '小明', '18888888888', '2020-03-16 14:31:21');
INSERT INTO `user` VALUES (2, '小红', '177777777777', '2020-03-16 14:34:58');
INSERT INTO `user` VALUES (3, '小王', '16666666666', '2020-03-16 14:35:11');
INSERT INTO `user` VALUES (4, '小张', '15555555555', '2020-03-16 14:37:25');
INSERT INTO `user` VALUES (5, '小刘', '14444444444', '2020-03-16 14:48:08');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
1.File–>New–>Project—>Spring Initializer,在这里选择一下SDK版本
2.填写项目信息
3.添加依赖
4.选择项目目录,并确定新建完成,新建完成后,需要import一下maven依赖。项目目录如下:
5.Maven依赖如下:
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.1.2version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<scope>runtimescope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
<exclusions>
<exclusion>
<groupId>org.junit.vintagegroupId>
<artifactId>junit-vintage-engineartifactId>
exclusion>
exclusions>
dependency>
dependencies>
至此,SpringBoot工程创建完毕。
需要创建以下目录,用于存放dao层、service层、controller层、配置类代码。
序号 | 名称 | 作用 |
---|---|---|
1 | entities | 存放实体类 |
2 | config | 存放配置类 |
3 | mapper | 存放MyBatis映射接口(DAO层代码) |
4 | service | 存放service层接口代码 |
5 | service/impl | 存放service层接口的具体实现 |
6 | controller | 存放控制层代码 |
7 | resource/mapper | 存放MyBatis xml映射文件代码 |
此外,在resource目录下创建一个application.yml文件,用来代替原来的application.properties文件。
在entities包下创建类
package com.yky.springboot.entities;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private Long id;
private String name;
private String phone;
private Date birthday;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", phone='" + phone + '\'' +
", birthday=" + birthday +
'}';
}
}
在mapper包下创建接口
package com.yky.springboot.mapper;
import com.yky.springboot.entities.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface UserMapper {
User selectById(@Param("id") Long id);
}
目前在此接口中只定义了一个方法,该方法的作用是根据id查找User对象
在resource/mapper目录下创建UserMapper.xml文件
<mapper namespace="com.yky.springboot.mapper.UserMapper">
<select id="selectById" resultType="com.yky.springboot.entities.User">
SELECT * FROM `user` WHERE id = #{id}
select>
mapper>
在application.yml文件中添加以下代码:
spring:
datasource:
username: root
password: 123
#mysql8以上的驱动包需要指定时区
url: jdbc:mysql://127.0.0.1:23306/study-mybatis?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
#配置mybatis映射文件路径
mapper-locations: classpath:mapper/*.xml
采用IDEA代码自动生成功能生成UserMapper的测试类
添加@SpringBootTest注解,并编写测试方法
@SpringBootTest
class UserMapperTest {
@Autowired
UserMapper userMapper;
@Test
void selectById() {
User user = userMapper.selectById(1L);
System.out.println(user);
}
}