【JavaEE进阶】MyBatis??

发布时间:2024年01月23日

🌲什么是MyBatis?

MyBatis是?款优秀的持久层框架,?于简化JDBC的开发。

  • MyBatis本是Apache的?个开源项?iBatis,2010年这个项?由apache迁移到了google code,并且改名为MyBatis。2013年11?迁移到Github。
  • 详细信息点我了解

在上?我提到?个词:持久层

  • 持久层:指的就是持久化操作的层,通常指数据访问层(dao),是?来操作数据库的.
    在这里插入图片描述
    简单来说MyBatis是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库?具

接下来,博主将通过?个??程序,让?家感受?下通过Mybatis如何来操作数据库

🌳准备?作

🚩创建?程

创建springboot?程,并导?mybatis的起步依赖、mysql的驱动包

这里只演示导入mybatis的起步依赖、mysql的驱动包。不会创建springboot的小伙伴参考博主写的 【JavaEE进阶】SpringBoot的创建与简单使用

在这里插入图片描述

项??程创建完成后,?动在pom.xml?件中,导?Mybatis依赖和MySQL驱动依赖

在这里插入图片描述

🚩数据准备

创建??表,并创建对应的实体类User

DROP DATABASE IF EXISTS mybatis_test;
CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;
-- 使?数据数据
USE mybatis_test;

-- 创建表[??表]
DROP TABLE IF EXISTS userinfo;
CREATE TABLE `userinfo` (
	`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(),
	PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;

-- 添加??信息
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );

创建userinof表如下
在这里插入图片描述
创建对应的实体类UserInfo

由于数据库单词之间采用蛇形,而java单词之间喜欢采用驼峰,所以这里我们进行一个简单的转换。其他实体类的属性名与表中的字段名??对应

🚩配置数据库连接字符串

Mybatis中要连接数据库,需要数据库相关参数配置

  • MySQL驱动类

  • 登录名

  • 密码

  • 数据库连接字符串

application.yml配置文件如下:

spring:
 datasource:
  url: jdbc:mysql://127.0.0.1:3306/mybatis_test?
   characterEncoding=utf8&useSSL=false
  username: root
  password: 666666
  driver-class-name: com.mysql.cj.jdbc.Driver

注意事项:

  • 如果使?MySQL是5.x之前的使?的是"com.mysql.jdbc.Driver",如果是?于5.x使?的是“com.mysql.cj.jdbc.Driver”.

🚩 在项?中,创建持久层接?UserInfoMapper

在这里插入图片描述
查询所有用户代码如下:

@Mapper
public interface UserInfoMapper {
    @Select("select * from userinfo")
    public List<UserInfo> selectAll();
}

Mybatis的持久层接?规范?般都叫XxxMapper
@Mapper注解:表?是MyBatis中的Mapper接?

  • 程序运?时,框架会?动?成接?的实现类对象(代理对象),并给交Spring的IOC容器管理
  • @Select注解:代表的就是select查询,也就是注解对应?法的具体实现内容

🍃单元测试

在创建出来的SpringBoot?程中,在src下的test?录下,已经?动帮我们创建好了测试类,我们可以直接使?这个测试类来进?测试.

在这里插入图片描述
在这里插入图片描述
实现代码如下:

@SpringBootTest
class MybatisApplicationTests {
    @Autowired
    private UserInfoMapper userInfoMapper;
    @Test
    void contextLoads() {
        List<UserInfo> list = userInfoMapper.selectAll();
        System.out.println(list);
    }
}

测试类上添加了注解@SpringBootTest,该测试类在运?时,就会?动加载Spring的运?环境.我们通过@Autowired这个注解,注?我们要测试的类,就可以开始进?测试了

直接点该测试方法测试就好
在这里插入图片描述
我们运行看一下结果如下:
在这里插入图片描述

但是我们发现返回结果中,可以看到,只有SQL语句中查询的列对应的属性才有赋值。
这是当前代码正常得情况,具体解决方法关注博主后续博文得发布

🚩使?Idea?动?成测试类

我们也可以使?Idea?动?成测试类

  1. 在需要测试的Mapper接?中,右键->Generate->Test
    在这里插入图片描述

  2. 选择要测试的?法,点击OK

在这里插入图片描述

我们就可以在目录下找到我们创建得测试类了

在这里插入图片描述

  1. 书写测试代码
@SpringBootTest
class UserInfoMapperTest {
    @Autowired
    private UserInfoMapper userInfoMapper;
    @Test
    void selectAll(){
        List<UserInfo> list = userInfoMapper.selectAll();
        System.out.println(list);
    }
}

🍀打印?志

在Mybatis当中我们可以借助?志,查看到sql语句的执?、执?传递的参数以及执?结果在配置?件中进?配置即可

application.yml配置文件如下:

mybatis:
 configuration: # 配置打印 MyBatis?志
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

我们再重新运行程序就可以看到SQL执?内容,以及传递参数和执?结果

在这里插入图片描述

①:查询语句
②:传递参数及类型
③:SQL执?结果

?总结

关于《【JavaEE进阶】MyBatis??》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!

文章来源:https://blog.csdn.net/m0_71731682/article/details/135769061
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。