如何在自己的Maven工程上搭建Mybatis框架?

news2024/11/25 20:34:39

编译软件:IntelliJ IDEA 2019.2.4 x64
操作系统:win10 x64 位 家庭版
Maven版本:apache-maven-3.6.3
Mybatis版本:3.5.6


目录

    • 前言
  • 一. 什么是Mybatis框架?
    • 1.1 框架是什么?
    • 1.2 什么是MyBatis ?
    • 1.3 MyBatis的参考资料在哪找?
  • 二. 如何搭建Mybatisi框架(入门案例)?
    • 2.1 准备数据
    • 2.2 搭建Mybatis框架步骤
      • 2.2.1 在该maven工程下的pop.xml中导入jar包
      • 2.2.2 编写核心配置文件【mybatis-config.xml】
      • 2.2.3 书写相关接口及映射文件
      • 2.2.4 测试(使用SqlSession对象)
    • 2.3 搭建log4j 日志框架


前言

“Mybatis框架”,“Mybatis框架“…, 拆解其名词,我们可以得到”Mybatis是一个框架的名字“这一浅显的结论,但是何为框架?何为Mybatis?且看本文为你分解。


一. 什么是Mybatis框架?

1.1 框架是什么?

举个生活中的例子,当我们努力工作,攒钱买房时,买到的房子是可以直接拧包入住吗?
当我们花钱购置自己的的个人电脑时,自己的电脑一买回来就可以直接拿来使用的吗?并
不是,买到的房子只是毛胚房,需要后期的装修以及添置家具,才能入住;买到的电脑,需要我们首次开机时设置相应的系统参数,比如设置网络与登录账户或者创建账户等等,才能使用。

框架就相当于上述例子中的毛胚房刚买回但未配置的电脑,是个半成品,Java程序中的框架也是如此,其他语言中的框架亦是如此。

Java程序中常见的框架【后端开发】有:

  1. Mybatis框架持久化层框架【dao层】
  2. SpringMVC框架控制层框架【Servlet)层】
  3. Spring框架全能选手

1.2 什么是MyBatis ?

  1. MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架
  2. MyBatis避免了几乎所有的DBC代码和手动设置参数以及获取结果集
  3. MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的 POJO(Plain Ordinary Java Object,普通的Java对象)映射成数据库中的记录
  4. Mybatis是一个半自动的持久化层的ORM(Object Relation Mapping)框架

什么是ORM?

ORM (Object Relation Mapping) --> 【对象 关系 映射】

将java中的对象与数据库中表建立映射关系

优势就是操作java中的对象,就可以影响数据库中表的数据

为何称MyBatis是半自动的?

这是相对于真正的 ORM 框架(例如 Hibernate、Spring Data JPA 等)来说,Mybatis 在对象关系映射方面自动化程度较低。

在 Mybatis 中,开发人员需要手动将 SQL 语句与 Java 对象之间的映射规则定义在 XML 文件或注解中。这意味着,Mybatis 不会自动生成 SQL 语句,并且不会在 Java 对象和数据库表之间进行自动转换。

但是,与此同时,Mybatis 也提供了很多功能上强大的 SQL 语句生成特性,例如:可以动态拼接 SQL 语句、支持使用 DAO 层接口代理执行 SQL 语句等,使得开发人员能够更加灵活地操作数据库。

1.3 MyBatis的参考资料在哪找?

①MyBatis的源码地址

②MyBatis的官方文档地址


二. 如何搭建Mybatisi框架(入门案例)?

不论导入什么框架,都要历经以下的三步:

  1. 导入jar包
  2. 编写配置文件
  3. 使用核心类库

案例需求:在数据库中建立一个数据表tbl_employee,同时在maven工程中建立一个Employee类,实现从数据库中根据id(员工编号)查找对应的员工信息,尝试使用mybatis框架实现它

2.1 准备数据

①建库建表建约束并导入测试数据

CREATE TABLE tbl_employee(
id INT(11)PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(50),
email VARCHAR(50),
salary DOUBLE(10,2)
);

在这里插入图片描述

②准备maven工程

在这里插入图片描述

2.2 搭建Mybatis框架步骤

2.2.1 在该maven工程下的pop.xml中导入jar包

我们需要以下三个jar包:

  • MySQL的驱动jar包 8.0.26
  • junit 4.12
  • Mybatis框架的jar包 3.5.6

示例代码如下:

//pop.xml中导入相关jar包
<dependencies>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>



</dependencies>

2.2.2 编写核心配置文件【mybatis-config.xml】

位置:

resources目录下

文件命名:

推荐使用mybatis-config.xml

代码示例如下:

相关代码可直接在 https://mybatis.org/mybatis-3/zh/getting-started.html 中复制相应代码,粘贴到自己的核心配置文件中即可,如下所示。

在这里插入图片描述

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--   下面是mysql8版本            -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <!--    url后要加时区 ?serverTimezone=UTC" ,不然报错           -->
                <property name="url" value="jdbc:mysql://localhost:3306/0411db?serverTimezone=UTC"/>
            <!-- 下面是mysql5版本的写法
                 <property name="driver"value="com.mysql.jdbc.Driver"/>
                 <property name="url"value="jdbc:mysql://localhost:3306/0411db"/>
                -->
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    //设置映射文件的路径
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

在这里插入图片描述

注意:

如果你的MySQL版本为8及以上, url后要加时区“ ?serverTimezone=UTC" ,不然会报错

针对MySQL的数据库版本不同, diver与url的value值写法会有所不同

以我的mysql数据库版本(8.0.26)举例如下所示:

MySQL8版本:

<property naurlme="driver" value="com.mysql.cj.jdbc.Driver"/>
/url后要加时区“ ?serverTimezone=UTC" ,不然会报错
<property name="url" value="jdbc:mysql://localhost:3306/0411db?serverTimezone=UTC"/>

MySQL5版本:

<property name="driver"value="com.mysql.jdbc.Driver"/>
<property name="url"value="jdbc:mysql://localhost:3306/0411db"/>

2.2.3 书写相关接口及映射文件

映射文件位置:

resources/mapper(这是新建一个包Mapper用以存放多个映射文件)

映射文件命名:

XXMapper.xml(推荐与对应的Mapper接口的命名一致)

映射文件作用:

为对应的Mapper接口书写sql语句

ps:

一个xxxMapper接口对应一个映射文件XXMapper.xml

如果有多个Mapper接口,那么resources目录下就必须有多个对应的映射文件,但是resources目录下也存放核心配置文件,为区分核心配置文件与多个映射文件,推荐在resources目录下新建一个包Mapper,用以存放多个映射文件

注意:

  • 映射文件名与接口名保持一致
  • 映射文件namespace与接口全类名保持一致
  • 映射文件Select的Id的属性值与接口的方法名保持一致

在这里插入图片描述

附注:

在这里插入图片描述

示例代码如下:

①在src\main\java\mybatis\mapper下定义EmployeeMapper接口

package mybatis.mapper;

import mybatis.pojo.Employee;

public interface EmployeeMapper {
	//根据员工编号查找对应的员工信息
    public Employee selectByempId(int empId);

}

②在src\main\resources\mapper下定义EmployeeMapper接口对应的映射文件EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">


<mapper namespace="mybatis.mapper.EmployeeMapper">
    <!--  resultType:Mapper接口中selectByempId方法的返回值类型【Employee类(写类的全名称)】  -->
    <select id=" selectByempId" resultType="mybatis.pojo.Employee">
        select
            id,
            last_name,
            email,salary
        from
            tbl_employee
        where
            id= #{empId}
    </select>
</mapper>

附注:映射文件中的基本配置信息的相关代码可直接在https://mybatis.org/mybatis-3/zh/getting-started.html 中复制代码,粘贴到自己的映射文件,修改部分参数值即可

在这里插入图片描述

2.2.4 测试(使用SqlSession对象)

步骤:

①先获取SqlSessionFactory对象

②再获取SqlSession对象

③通过SqlSession对象获取KXXMapper代理对象

④测试

代码示例如下:

import mybatis.mapper.EmployeeMapper;
import mybatis.pojo.Employee;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class TestMybatis {

    @Test
    public void test01(){

        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            //通过SqlSessionFactory对象调用openSession();
            SqlSession sqlSession = sqlSessionFactory.openSession();

            //获取EmployeeMapper的代理对象
            EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
            System.out.println(" employeeMapper.getClass().getName() = "+employeeMapper.getClass().getName());

            Employee employee = employeeMapper.selectByempId(1);
            System.out.println(employee);


        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

在这里插入图片描述

2.3 搭建log4j 日志框架

为什么要搭建log4j 日志框架?

log4j 日志框架可以把mybatis 的底层运行过程显示出来,便于我们开发者查找bug

步骤:

①在要应用的模块的pop.xml中引入log4j 的jar包

代码示例如下:

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

②在resources目录下编写它的配置文件log4j.xml

示例代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>

③运行测试

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/478069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.11 C结构体及结构体数组

结构体的意义 问题&#xff1a;学籍管理需要每个学生的下列数据&#xff1a;学号、姓名、性别、年龄、分数&#xff0c;请用C语言程序存储并处理一组学生的学籍。 思考&#xff1a;如果有多个学生&#xff0c;该怎么定义 已学数据类型无法解决。 结构体概述 正式&#xff1a;…

【Sping学习详解】

重新学习Spring很久了&#xff0c;也看了不少的视频&#xff0c;但是没有系统总结&#xff0c;容易忘记&#xff0c;网上寻找相关博客&#xff0c;也没有找到按照路线总结的&#xff0c;只能说不顺我心&#xff0c;所以自己总结一下&#xff01;&#xff01;&#xff01; 从下…

vulnhub靶机dpwwn1

准备工作 下载连接&#xff1a;https://download.vulnhub.com/dpwwn/dpwwn-01.zip 网络环境&#xff1a;DHCP、NAT 下载完后解压&#xff0c;然后用VMware打开dpwwn-01.vmx文件即可导入虚拟机 信息收集 主机发现 端口发现 继续查看端口服务信息 打开网站发现只有Apache默认…

【Spring篇】IOC/DI注解开发

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 目录 一、IOC/DI注解开发 1.注解开发定义bean 2.纯注解开发模式 1.思路分析 2.实现步骤 3.注解开发bean作用范围与生命周期管理 1.环境准备 2.Bean的作用范围 3.Bean的生命周期 4.注解开发依赖…

行为识别 Activity Recognition

行为识别 行为检测是一个广泛的研究领域&#xff0c;其应用包括安防监控、健康医疗、娱乐等。 课程大纲 导论 图卷积在行为识别中的应用&#xff1a;论文研读&#xff0c;代码解读&#xff0c;实验 Topdown关键点检测中的hrnet&#xff1a;论文研读&#xff0c;代码解读&a…

ETL工具 - Kettle 流程、应用算子介绍

一、Kettle 流程和应用算子 上篇文章对Kettle 转换算子进行了介绍&#xff0c;本篇文章继续对Kettle 的流程和应用算子进行讲解。 下面是上篇文章的地址&#xff1a; ETL工具 - Kettle 转换算子介绍 流程算子主要用来控制数据流程和数据流向&#xff1a; 应用算子则是Kettle给…

ESP32 ESP-Rainmaker 本地点灯控制Demo测试

基于ESP-Rainmaker 本地点灯控制Demo测试 &#x1f33f;ESP-Rainmaker项目地址&#xff1a;https://github.com/espressif/esp-rainmaker/tree/master ✨这个项目早些时候就已经开始测试了&#xff0c;最后卡在了手机APP连接esp32设备端一直无法连接上&#xff0c;也一直没有找…

性能:Intel Xeon(Ice Lake) Platinum 8369B阿里云CPU处理器

阿里云服务器CPU处理器Intel Xeon(Ice Lake) Platinum 8369B&#xff0c;基频2.7 GHz&#xff0c;全核睿频3.5 GHz&#xff0c;计算性能稳定。目前阿里云第七代云服务器ECS计算型c7、ECS通用型g7、内存型r7等规格均采用该款CPU。 Intel Xeon(Ice Lake) Platinum 8369B Intel …

Linux第五章

文章目录 前言一、MySQL5.7版本在CentOS系统安装二、Tomcat安装部署1.安装JDK环境2. 解压并安装Tomcat 三、Nginx安装部署四、RabbitMQ安装部署五、Redis安装部署六、ElasticSearch安装部署七、集群化环境前置准备八、Zookeeper集群安装部署九、Kafka集群安装部署十、大数据集群…

操作系统的进程调度

进程调度概述 一、操作系统的调度时机 1、什么时候进行进程调度&#xff1f; 主动放弃&#xff08;进程正常终止、运行过程中发生异常而终止、进程主动请求阻塞&#xff09; 被动放弃&#xff08;分给进程的时间片用完、有更紧急的事需要处理、有更高优先级的进程进入就绪队列…

CentOS7 安装MySQL8

CentOS7 安装MySQL8 安装 VMware 以及 CentOS更新系统添加 MySQL Yum 存储库安装 MySQL 8启动 MySQL检查 MySQL 状态查看临时密码用临时密码登录修改密码 安装 VMware 以及 CentOS 由于本博主之前写过&#xff0c;在这给出链接&#xff0c;不再赘述了 https://blog.csdn.net/w…

2023.4.30 第五十一次周报

目录 前言 文献阅读 背景 对现有技术的分析 主要思路和贡献 相关性分析和归一化处理 相关性分析 归一化处理 TCN 基于 TCN-LSTM 的 PM 浓度预测模型 敏感性分析 论文思路 求半方差 训练模型 -1 训练模型-2 总结 前言 This week I studied an article that cons…

R语言 | 进阶字符串的处理

目录 一、语句的分割 二、修改字符串的大小写 三、unique()函数的使用 四、字符串的连接 4.1 使用paste()函数常见的失败案例1 4.2 使用paste()函数常见的失败案例2 4.3 字符串的成功连接与collapse参数 4.4 再谈paste()函数 4.5 扑克牌向量有趣的应用 五、字符串数据的…

vue前端开发100问(持续更新)

1.export default的作用是 export主要用于对外输出本模块变量的接口&#xff0c;一个文件就可以被理解为一个模块。export就是导出。 import就是在一个模块中加载另一个含有export接口的模块&#xff0c; import就是导入。 2.什么样的内容需要放在export default里面&#xf…

mybatis使用(简单易上手)

mybatis使用 一、mybatis介绍1、mybatis是什么2、mybatis支持的数据库3、~~mybatis插件机制~~ 二、springboot集成mybatis1、引入依赖2、配置mybatis 三、使用mybatis1、注解方式使用mybatis2、XML文件方式 一、mybatis介绍 1、mybatis是什么 MyBatis是一个开源的Java持久层框…

第十七章 预制件prefab(下)

本章节我们来讲解如何编辑预制体文件。这里介绍三种打开编辑预制件的方式。第一就是通过预制件的实例游戏对象的Inspector检视面板上面的预制件“打开”按钮。 第二就是在Project工程面板中选中预制件文件&#xff08;Cube.prefab&#xff09;&#xff0c;然后在Inspector检视面…

山东专升本计算机第八章-多媒体技术基础

多媒体技术基础 多媒体技术 考点 7 图形/图像处理软件 图形/图像文件格式 • BMP • windows系统下的标准位图格式 • 未经压缩 • JPEG&#xff08;联合图像专家组&#xff09; • 有损压缩格式&#xff0c;色数量高达24位&#xff0c;广泛应用于Internet上的主页或图片…

excel实战小测第四

【项目背景】 本项目为某招聘网站部分招聘信息&#xff0c;要求对“数据分析师”岗位进行招聘需求分析&#xff0c;通过对城市、行业、学历要求、薪资待遇等不同方向进行相关性分析&#xff0c;加深对数据分析行业的了解。 结合企业真实招聘信息&#xff0c;可以帮助有意转向数…

【艾特淘】淘宝“客服3分钟响应率”考核调整

淘宝商家“客服3分钟响应率”考核调整&#xff0c;还不知道的商家赶紧来看看&#xff0c;具体都有哪些变化哦~ 一、考核范围 考核范围对象为店铺正常状态&#xff0c;达到一定经营模式的淘宝卖家。 此对象定义为&#xff1a;卖家的商家层级达到5以上&#xff0c;同时还将考虑…