简介
什么是 MyBatis?
什么是MyBatis?
MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。(框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础上进行软件开发更加高效、规范、通用、可拓展。)
MyBatis本是 Apache的一个开源项目iBatis(前身),2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
官网:MyBatis 3 | 简介 – mybatis
MyBatis的快速入门
需求:使用Mybatis查询所有用户数据 。
准备工作:1. 创建 SpringBoot 工程、引入 Mybatis 相关依赖2. 准备数据库表 user 、实体类 User3. 配置 Mybatis (在 application.properties 中数据库连接信息)编写 Mybatis 程序: 编写 Mybatis 的持久层接口,定义 SQL( 注解 /XML)
具体实现如下:
1). 创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包、lombok。
2).数据准备:创建用户表user,并创建对应的实体类User。
-
用户表 user(如果已经存在,就不用创建了)
create table user(
id int unsigned primary key auto_increment comment 'ID,主键',
username varchar(20) comment '用户名',
password varchar(32) comment '密码',
name varchar(10) comment '姓名',
age tinyint unsigned comment '年龄'
) comment '用户表';
insert into user(id, username, password, name, age) values (1, 'daqiao', '123456', '大乔', 22),
(2, 'xiaoqiao', '123456', '小乔', 18),
(3, 'diaochan', '123456', '貂蝉', 24),
(4, 'lvbu', '123456', '吕布', 28),
(5, 'zhaoyun', '12345678', '赵云', 27);
-
实体类:实体类的属性名与表中的字段名一一对应。 实体类放在
com.itheima.pojo
包下。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id; //ID
private String username; //用户名
private String password; //密码
private String name; //姓名
private Integer age; //年龄
}
3). 配置Mybatis
在 application.properties
中配置数据库的连接信息。
#数据库访问的url地址
spring.datasource.url=jdbc:mysql://localhost:3306/web
#数据库驱动类类名
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#访问数据库-用户名
spring.datasource.username=root
#访问数据库-密码
spring.datasource.password=root@1234
上述的配置,可以直接复制过去,不要敲错了。 全部都是 spring.datasource.xxxx
开头。
4). 编写Mybatis程序:编写Mybatis的持久层接口,定义SQL语句(注解)
在创建出来的springboot工程中,在引导类所在包下,在创建一个包 mapper
。在 mapper
包下创建一个接口 UserMapper
,这是一个持久层接口(Mybatis的持久层接口规范一般都叫 XxxMapper)。
UserMapper接口的内容如下:
import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
/**
* 查询全部
*/
@Select("select * from user")
public List<User> findAll();
}
提示:Mybatis的持久层接口命名规范为 XxxMapper,也称为 Mapper接口。
注解说明:
@Mapper注解:表示是mybatis中的Mapper接口
程序运行时,框架会自动生成接口的实现类对象(代理对象),并给交Spring的IOC容器管理
@Select注解:代表的就是select查询,用于书写select查询语句
5). 单元测试
在创建出来的SpringBoot工程中,在src下的test目录下,已经自动帮我们创建好了测试类 ,并且在测试类上已经添加了注解 @SpringBootTest
,代表该测试类已经与SpringBoot整合。
该测试类在运行时,会自动通过引导类加载Spring的环境(IOC容器)。我们要测试那个bean对象,就可以直接通过@Autowired
注解直接将其注入进行,然后就可以测试了。
@SpringBootTest
class SpringbootMybatisQuickstartApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void testFindAll(){
List<User> userList = userMapper.findAll();
for (User user : userList) {
System.out.println(user);
}
}
}
运行结果:
注意:测试类所在包,需要与引导类所在包相同。
小结:
1.SpringBoot+Mybatis入门程序操作步骤?
准备工作A. 创建 springboot 工程,引入 Mybatis 相关依赖B. 准备数据库表、实体类C. application.properties 中配置数据库连接信息定义 Mapper 接口 ( @Mapper ) ,编写 SQL2.SpringBoot的单元测试类上需要加什么注解 ?
@SpringBootTest :会在单元测试运行时,加载 springBoot 的环境注意:测试类所在包需要与引导类包名相同 ( 或放在引导类所在包的子包下 )