Mybatis 简单启动过程入门详解
作者:鸽鸽程序猿
MyBatis是一个持久层框架,简化JDBC操作,SpringBoot集成MyBatis,通过创建项目、准备数据、配置文件、实体类和接口,可以实现数据库操作,使用@Mapper和@Select注解简化接口实现,测试类使用@SpringBootTest和@Test注解启动,本文介绍Mybatis启动过程,感兴趣的朋友一起看看吧
一、Mybatis简介
Mybatis是一个操作数据库驱动的持久层框架,用来简化JDBC操作的,SpringBoot集成了这个框架。
MyBatis本是 Apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache迁移到了google code,并且改名为MyBatis。2013年11⽉迁移到Github.
二、MyBatis⼊⻔
2.1 创建项目
在前面跟我们前面创建的SpringBoot项目一样,只有在选择依赖的时候要多选择SQL下的Mybatis Framework和MySQL Driver
2.2 准备数据
直接使用下面准备的数据库数据即可:
- 创建一个mybatis_test的数据库
- 该库中含有user_info和article_info两张表
- user_info表中有主键id,username等等信息
- article_info表中有主键id,title等等信息
-- 创建数据库 DROP DATABASE IF EXISTS mybatis_test; CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4; -- 使用数据数据 USE mybatis_test; -- 创建表[用户表] DROP TABLE IF EXISTS user_info; CREATE TABLE `user_info` ( `id` INT ( 11 ) NOT NULL AUTO_INCREMENT, `username` VARCHAR ( 127 ) NOT NULL, `password` VARCHAR ( 127 ) NOT NULL, `age` TINYINT ( 4 ) NOT NULL, `gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-女 0-默认', `phone` VARCHAR ( 15 ) DEFAULT NULL, `delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除', `create_time` DATETIME DEFAULT now(), `update_time` DATETIME DEFAULT now() ON UPDATE now(), PRIMARY KEY ( `id` ) ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4; -- 添加用户信息 INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone ) VALUES ( 'admin', 'admin', 18, 1, '18612340001' ); INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone ) VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' ); INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone ) VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' ); INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone ) VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' ); -- 创建文章表 DROP TABLE IF EXISTS article_info; CREATE TABLE article_info ( id INT PRIMARY KEY auto_increment, title VARCHAR ( 100 ) NOT NULL, content TEXT NOT NULL, uid INT NOT NULL, delete_flag TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除', create_time DATETIME DEFAULT now(), update_time DATETIME DEFAULT now() ) DEFAULT charset 'utf8mb4'; -- 插入测试数据 INSERT INTO article_info ( title, content, uid ) VALUES ( 'Java', 'Java正文', 1 );
2.3 配置文件
直接复制下面的代码即可,注意要将password改写成你电脑上的MySQL数据库登录密码。
spring: datasource: url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false username: root password: 1234 driver-class-name: com.mysql.cj.jdbc.Driver
2.4 实体类
在idea中创建一个类来接收数据库中user-info表的数据,类中的成员与user-info表中的字段一一对应:
package com.example.springmybatisdemo.model; import lombok.Data; import java.util.Date; @Data public class UserInfo { private Integer id; private String username; private String password; private Integer age; private Integer gender; private String phone; private Integer deleteFlag; private Date createTime; private Date updateTime; }
创建接口来操作数据库,使用@Mapper注解来将该接口交给Spring管理,@Select(" ")来实现查询语句,括号中的参数写SQL的查询语句。
- @Mapper注解是Mybatis提供的控制反转注解。
- @Select注解直接将这个接口的方法给实现了。所以我们在后面可以直接注入这个接口。我们前面学习的SpringBoot的IoC注解是没有这个功能的,如果是接口需要自己实现。
- 当我们的接口是使用@Mapper注解管理,其中有些方法有没有使用Mybatis可以实现的注解,那么就会在使用时抛出异常。
package com.example.springmybatisdemo.mapper; import com.example.springmybatisdemo.model.UserInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper public interface UserMapper { @Select("select * from user_info") List<UserInfo> selectAll() ; }
测试类,使用@SpringBootTest注解来启动测试类,@Test启动测试方法。
- @SpringBootTest这个注解就是在运行这个测试类的时候加载Spring环境
- @Test注解可以让被修饰的方法启动起来,就不需要使用main方法。
package com.example.springmybatisdemo; import com.example.springmybatisdemo.mapper.UserMapper; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class UserInfoMapperTest { @Autowired private UserMapper userMapper; @Test void selectAll() { System.out.println(userMapper.selectAll()); } }
2.5 执行结果
执行结果如下图,确实将我们插入到user-info表中的数据拿到了:
到此这篇关于Mybatis 简单启动的文章就介绍到这了,更多相关Mybatis 启动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!