当前位置: 首页 > news >正文

MyBatis框架

前言:

MyBatis框架相比JDBC来说大大提升了我们写代码的效率,但是对初学者来说框架还是有点难以理解,所以本篇博客会十分详细的讲解MyBatis框架

目录

一.MyBatis概述

1.什么是映射?

2.什么是XML?

二.MyBatis框架搭建

1.创建一张表和表对应的实体类

2.导入MyBatis Jar包和mysql数据库驱动包

3.创建MyBatis全局配置文件

三.测试MyBatis

四.总结


一.MyBatis概述

MyBatis是一款优秀的持久层(数据访问层)框架.

MyBatis避免了JDBC代码手动设置参数以及手动获取结果集的操作,自动将ResultSet结果映射到对应的数据库表对象

MyBatis可以使用XML或注解,将数据库中的记录映射成java对象

1.什么是映射?

就是将我们查询到的结果封装到我们与数据库表的对应对象的操作

例如:在数据库中我们有一个学生表,我们用sql语句查询到一个学生,学生信息都保存在了ResultSet对象中,我们要将信息提取到我们对应的学生类中

while(resultset.next())//指向结果集中的数据
{student.setId(resultset.getInt("id"));student.setName(resultset.getString("name"));student.setGender(resultset.getString("gender"));student.setPhone(resultset.getString("phone"));student.setBirthday(resultset.getDate("birthdy"));student.setRegtime(resultset.getTimestamp("regtime"));
}

2.什么是XML?

XML 文件​(可扩展标记语言Extensible Markup Language)是一种用于存储和传输结构化数据的文本文件格式

XML 配置注解配置是两种定义 SQL 映射的方式

用语言来表述难以理解对初学者来说,在下面MyBatis框架搭建中博主会具体解释怎么使用,为什么使用

二.MyBatis框架搭建

首先在src文件下面创建一个包(Demo),在这个包下面创建一个dao包(存放接口)和一个model包(存放实体类)

DAO​(Data Access Object,数据访问对象)是一种设计模式,用于将业务逻辑数据访问逻辑分离,提供对数据库操作的抽象接口

1.创建一张表和表对应的实体类

在数据库中创建一个名为admin的表

create database if not exists mybatis_db charset utf8create table  admin(id int primary key auto_increment,account varchar(20),password varchar(20),gender char(1),reg_time datetime
)
在java中创建与表对应的实体类(model包下面),这里的实体类也就是用来接受映射结果的类,需要注意的是这里需要生成set和get方法,由于篇幅原因这里没有写出来
public class Admin {//模型类,与数据库的表是对应的,用来封装admin信息private int id;private String account;private String password;private String gender;private Date reg_time;
}

2.导入MyBatis Jar包和mysql数据库驱动包

博主这里用的数据库是mysql,所以导入的是mysql驱动包,这一步就不详细演示了,上一片博客里面有,如果有需要Jar包的同学可以私信我

3.创建MyBatis全局配置文件

<在项目名下创建resource目录(Directory),右键设置为资源目录>

<在resource下面创建一个mybatis.xml的类(xml是一种配置文件,主要用来存储配置信息),里面的信息需要自己补全,就是JDBC中获取数据库链接的配置>

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver" /><property name="url" value="自己补全...?serverTimezone=Asia/Shanghai" /><property name="username" value="数据库名" /><property name="password" value="数据库密码"/></dataSource></environment></environments>
</configuration

<定义操作接口>

在dao包下创建一个接口(AdminDao)

public interface AdminDao {//定义功能//在接口中定义一个通过id查询admin的方法Admin findAdminById(int id);}

<创建sql映射文件>

在resource目录下创建一个mappers包(对应的是Dao包中的接口),在mappers包下,创建一个adminMapper.xml的类

Mapper(数据映射器):定义SQL操作,映射结果,将sql语句从java语句中分离

namespace是接口的地址,id是接口名,parameterType是数据类型,resultType是结果映射的接受类(实体类)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 专门写sql语句的文件 -->
<!-- 接口的完整地址 -->
<mapper namespace="Demo.dao.AdminDao"><select id="findAdminById" parameterType="int" resultType="Demo.model.Admin">select id,account,password,gender,reg_time from admin where id = #{id}<!-- 将查询结果自动封装到一个对象中 --></select>
</mapper>

<注册sql映射文件将Mapper加入到mybatis.xml中>

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- xml是一种配置文件,主要用来存储配置信息 -->
<!-- 配置与数据库的连接信息 -->
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver" /><property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis_db?serverTimezone=Asia/Shanghai" /><property name="username" value="root" /><property name="password" value="root"/></dataSource></environment></environments><!-- 注册sql映射文件,里面的文件对应的就是sql中的表 --><mappers><mapper resource="mappers/AdminMapper.xml"/></mappers>
</configuration>

三.测试MyBatis

在src文件下面创建一个Text类用来测试MyBatis

public static void main(String[] args) throws IOException {//读取配置文件Reader reader = Resources.getResourceAsReader("mybatis.xml");//创建SqlSessionFactory 用来创建sqlSession,类是jdbc中的ConnectionSqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//创建SqlSession 与数据库的会话对象,建立数据库的链接对象SqlSession sqlSession = sessionFactory.openSession();//获得接口代理对象//jdbc与mybatis的区别//mybatis没有做任何的结果映射(封装),自动处理,返回一个对象AdminDao adminDao = sqlSession.getMapper(AdminDao.class);Admin admin = adminDao.findAdminById(1);System.out.println(admin);sqlSession .close();//关闭
}

四.总结

下图表示MyBatis框架整体流程

相关文章:

  • 图+文+语音一体化:多模态合成数据集构建的实战与方法论
  • 利用deepseek+Mermaid画流程图
  • C++类和对象上
  • 什么是单元测试的“覆盖率”
  • 《软件设计师》复习笔记(11.4)——处理流程设计、系统设计、人机界面设计
  • mysql collation_database 参数
  • Linux内核机制——内存管理
  • Git LFS 学习笔记:原理、配置、实践与心路历程
  • 【ROS】TEB 规划器
  • 概率多假设跟踪(PMHT):多目标跟踪中的概率软关联与高效跟踪算法解析
  • 继承的了解与学习
  • 使用 vcpkg 构建支持 HTTPS 的 libcurl 并解决常见链接错误
  • 【时时三省】(C语言基础)用do...while语句实现循环
  • Wireshark 搜索组合速查表
  • linux服务器命令行获取nvidia显卡SN的方法
  • 通过 winsw 把相关服务配置windows自启动
  • package.json 里面出现 workspace:*,关于工作区的解释
  • 文献总结:NIPS2023——车路协同自动驾驶感知中的时间对齐(FFNet)
  • 时序逻辑电路——序列检测器
  • 如何提高单元测试的覆盖率
  • 2025航天文化艺术论坛在上海举办
  • 推进“三个免于”,上海试点首发进口化妆品快速通关模式
  • 王毅将出席中国一中亚外长第六次会晤、金砖国家外长会晤和第十五次金砖国家安全事务高级代表会议
  • 体坛联播|曼城击败维拉迎英超三连胜,巴萨遭遇魔鬼赛程
  • 第三轮上海餐饮消费券本周五起报名,核销时间延长至6月2日
  • 庆祝中国印尼建交75周年招待会暨万隆会议70周年纪念活动在京举行