MyBatis 框架之一:简介及环境搭建详细步骤

1. MyBatis 是什么?

        MyBatis 是一个流行的、轻量级的 Java 持久层框架,它简化了与数据库交互和 SQL 映射的过程。MyBatis 取代了 JDBC 原始 API 的大量繁琐工作,允许开发者将更多的精力放在业务逻辑上而不是处理数据访问细节。

mybatis 是一款优秀的 ORM 持久化 框架

  • ORM
    • Object - Relation-Mapping
    • Object Java对象(类)--关系型数据库(表)--映射配置
    • 用來映射 类名和表名、属性和字段、Java类型和数据库类型等信息
  • 持久化
    • 瞬时状态转为持久状态过程-----插入 更新 删除操作
    • 持久状态转为瞬时状态过程---- 查询
    • 持久化:瞬时状态和持久状态相互转化的过程,称之为持久化
  • 序列化
    • ObjectInputStreame 和 ObjectOutputStream
    • 把对象状态转为可存储或可传输的状态,称之为序列化
    • 把可存储或可传输的状态转为对象状态,称之为反序列化
  • 框架
    • 一个半成品

2. 搭建 Mybatis项目

准备:

  • 创建数据库和表
  • Maven
    • 传统 Web项目 ,把 jar 手动拷贝到 WEB-INF/lib
    • Maven Web项目,只需配置 pom.xml 即可,自动下载和导入、管理 jar
      • jar 多
      • 版本不一致

3. Maven

Maven 是一款优秀 Java 自动构建工具

  • 源码--编译--测试--部署--安装等到服务器
  • 同类: Ant、Gradle

安装配置

  • 下载 :Maven – Download Apache Maven

  • 配置:

    • 解压到非中文目录下

    • 配置 Maven_Home 安装目录下的 conf 目录下的 settings.xml 配置文件,配置本地仓库的目录

      • 例如:\apache-maven-3.9.0\conf\settings.xml

      • 本地仓库:存放 bar 包的位置目录

        D:/Soft/maven/repo

    • 在 idea 开发工具中配置自定义的 Maven 目录

      • File --Settings--搜索 Maven 进行配置

        安装目录的配置和配置文件settings.xml配置,自动定位到上一步中的仓库目录

      • 注意:为了防止每次新建工程时,又重新恢复到默认的C盘目录,建议配置 “新建项目设置”

  • 本地仓库、中央仓库、私服仓库

        .本地仓库(Local Repository):

    • 这是每个开发者个人电脑上的一个目录,用来存储从远程仓库下载的所有 jar 包和其他构建工件。当开发者构建项目时,Maven 或 Gradle 首先会在本地仓库查找所需的依赖。如果本地仓库没有该依赖,就会尝试从远程仓库下载,并将下载后的文件保存到本地仓库供后续使用。这样可以减少不必要的网络传输,提高构建速度。
    • 中央仓库(Central Repository):
    • 中央仓库是由 Maven 社区维护的一个大型公共仓库,位于 Central Repository: ,其中包含了大量开源项目的构件(artifacts)。大多数流行的开源Java库都可以在这个仓库中找到。当开发者配置了指向中央仓库的地址后,构建工具会自动从这里获取未在本地仓库找到的依赖。
    • 私服仓库(Private/Nexus Repository):
    • 私服是指组织内部搭建的私有仓库服务器,如 Sonatype Nexus 或 JFrog Artifactory。它通常作为中央仓库的代理或补充,可缓存中央仓库的内容,同时也可以用来托管企业内部开发的私有构件,便于团队成员之间共享和管理这些构件。私服可以设置为优先于中央仓库被访问,从而加速依赖下载,同时也有利于保护敏感信息和控制版本发布流程。
  • 配置阿里镜像

    问题:每次在下载第一次使用的jar时,都会去访问中央仓库,国外的服务器,速度相对较慢

    所以为了提高下载速度,我们可以修改默认下载服务器的url ,更换为阿里的服务器

新建 Maven 项目

  • File -- New Project -- Empty Project
  • 新工程下右键,new Module 选择 Maven
  • 注意:新的 Maven 目录
    • 约定大于配置
    • 源代码位置: src/main/java
    • 资源文件位置:src/main/resources
    • 测试代码的目录:src/test/java
  • 自动化和半自动化
    • 自动化代表是Hibernate 半自动化代表 Mybatis
    • 自动化优点开发效率高,代码量小、简单、不需要学习SQL、入门简单;缺点:缺失了灵活性
    • 半自动化优点:灵活,运行效率相对较高,省略了自动生成SQL过程。 缺点:开发效率相对较低,代码量相对大写,需要学习SQL,复杂些

4. Mybatis 开发步骤

0. 创建数据库和表

先在 MySQL 创建 mydb 数据库

在创建表 emp

SQL:

create database mydb;
use mydb;
create table dept(deptno int primary key auto_increment,dname varchar(20)
);
create table emp(empno int primary key auto_increment,salary float,ename varchar(20),deptno int,hiredate date
);
private Integer empno;private String ename;private Float salary;private Integer deptno;private Date hiredate;

1. 配置依赖

在pom.xml中配置 mysql驱动依赖和mybatis依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>mybatis01</artifactId><version>1.0-SNAPSHOT</version><!--坐标--><dependencies><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!-- MyBatis 依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency></dependencies>
</project>

2. 新建和配置mybatis配置文件

  • 可以通过官网拷贝https://mybatis.org/mybatis-3/zh/getting-started.html
  • 位置:在src/main/resources 下新建 mybatis-coinfig.xml (名字可以自己定义)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="devA"><environment id="devA"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="username" value="root"/><property name="password" value="root"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb"/><property name="driver" value="com.mysql.cj.jdbc.Driver"/></dataSource></environment>
<!--        <environment id="devB"><transactionManager type=""></transactionManager><dataSource type=""></dataSource></environment>--></environments>
</configuration>

3. 编写实体类

  • 和表结构对应
  • 可以使用 Lombok 简化 setter 和 getter
@Data
public class Emp {private Integer empno;private String ename;private Float salary;private Integer deptno;private Date hiredate;}

4. 映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wdzl.dao.MySpace"><select id="getCount" >select count(*) from emp</select>
</mapper>

注意再更新配置文件,配置关联

<mappers><mapper resource="mapper/EmpMapper.xml"/>
</mappers>

5. 编写代码

SqlSessionFactoryBuilder

SqlSessionFactory

SqlSession

public class TestMyBatis {public static void main(String[] args) {// 解析 xml 配置和映射文件SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();try {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");// 创建sqlSessionFactorySqlSessionFactory sqlSessionFactory = builder.build(is);// 创建 sqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();//执行SQLInteger count =  sqlSession.selectOne("com.wdzl.dao.MySpace.getCount");System.out.println(">>>>==="+count);// 关闭sqlSession.close();} catch (Exception e) {throw new RuntimeException(e);}}
}

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

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

相关文章

激光雷达研究笔记1:资料整理与学习_windows机对其评估使用

到手了一款型号为LDROBOT LiDAR LD19 的单线激光雷达模块&#xff0c;现对其进行学习使用&#xff1a; 1.对产品手册的研究&#xff1a; 通读产品手册后&#xff0c;我提炼了几方面有用的信息&#xff1a; 1.测量依据&#xff1a; 以下是激光雷达点云扫描示意图&#xff1a; 上…

Linux信号机制(二)

目录 一、信号的阻塞 二、信号集操作函数 三、sigprocmask函数 四、pause函数 五、sigsuspend函数 一、信号的阻塞 有时候不希望在接到信号时就立即停止当前执行&#xff0c;去处理信号&#xff0c;同时也不希望忽略该信号&#xff0c;而是延时一段时间去调用信号处理函数。…

【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

Qt配置OpenCV,无需编译

网上很多关于Qt配置OpenCV的教程都需要下载CMake编译Opencv&#xff0c;但是这种做法出错的概率很大&#xff0c;很多时候会受CMake或者Opencv版本的影响&#xff0c;又或者是没有使用Qt自带的Cmake-gui.exe程序&#xff0c;我在编译的时候也是频繁出错。 本文推荐的方法是使用…

【EDK II】作为UEFI的实现,EDK II 的架构是什么样的

目录 前言 EDK II 架构 配置文件 结语 前言 基本输入输出系统 (Basic Input Output System, BIOS) 最早由 IBM&#xff08;International Business Machines Corporation) 公司于1981年提出并开发&#xff0c;后来成为个人计算机(PC)的标准固件接口。但受限于传统BIOS (Le…

MySQL的用户管理以及权限设置

用户管理 账户管理 我们在数据库里面创建用户&#xff0c;修改用户&#xff0c;删除用户&#xff0c;本质上就是对mysql数据库下的user表进行增删查改&#xff0c;用户的所有信息都存在这张表里&#xff0c;我们想要创建用户可以往user表insert&#xff0c;删除用户可以delet…

【Java基础概述-10】IO流、字节流、字符流、缓冲流、转换流、序列化、打印流、Properties属性集对象

目录 1、IO流概述 2、字节流的使用 2.1、FileInputStream字节输入流 2.1.1、读取方式一 2.1.2、读取方式二 2.1.3、字节流读取数据如何避免中文乱码 2.2、OutputStream字节输出流 2.3、案例&#xff1a;复制粘贴小案例 3、字符流 3.1、FileReader字符输入流 3.1.1、读…

打卡学习kubernetes——kubernetes架构原理

接上一篇的内容&#xff0c;除了核心组件&#xff0c;还有一些推荐的Add-ons&#xff1a; kube-dns 负责为整个集群提供DNS服务Ingress Controller 为服务提供外网入口Heapster 提供资源监控&#xff08;没用过这个&#xff0c;但是用过grafana&#xff0c;很方便&#xf…

MySQL的事务隔离是如何实现的?

目录 从一个例子说起 快照读和当前读 事务的启动时机和读视图生成的时刻 MVCC 隐藏字段 Undo Log回滚日志 Read View - 读视图 可重复读(RC)隔离级别下的MVCC 读提交(RR)隔离级别下的MCC 关于MVCC的一些疑问 1.为什么需要 MVCC &#xff1f;如果没有 MVCC 会怎样&am…

ov多域名SSL数字证书1200元一年送一月

随着互联网的发展&#xff0c;不论是个人用户还是企事业单位都不止有一个网站&#xff0c;为了保护网站安全&#xff0c;就需要为网站安装SSL证书&#xff0c;而SSL证书中的通配符SSL证书和多域名SSL证书都可以同时保护多个域名站点。其中&#xff0c;多域名SSL证书可以同时保护…

POS 之 验证者如何才能提议区块

验证者提议区块 验证者帐户提议区块。 验证者帐户由节点运营商(可以是AWS等待云服务商)管理&#xff0c;节点运营商运行验证者软件作为其执行和共识客户端的一部分&#xff0c;并且已经向存款合约中存入了至少 32 个以太币 然而&#xff0c;每个验证者只是偶尔负责提议一个区块…

jvm题库详解

1、JVM内存模型 注意&#xff1a;这个是基于jdk1.8之前的虚拟机&#xff0c;在jdk1.8后 已经没有方法区&#xff0c;一并合并到堆中的元空间了 JVM内存区域总共分为两种类型 线程私有区域&#xff1a;程序计数器、本地方法栈和虚拟机栈 线程共享区域&#xff1a;堆&#xff08…

android MMKV数据持久化缓存集合

前言 最近在使用mmkv缓存的时候 发现没有集合缓存 非常不方便 自己写一个方法 MMKV public class MmkvUtils {private MmkvUtils() {throw new UnsupportedOperationException("u cant instantiate me...");}public static void init() {MMKV.initialize(LeoUtils…

脚本.py文件转.exe文件遇见的问题,打开exe文件出现弹窗: No module named ‘xxx‘

目录 1 问题2 问题分析3 解决过程3.1 确保Pillow库存在3.2 迷惑阶段3.3 解决问题 4 希望大佬解答 1 问题 今天做了一个使用Python写的脚本文件.py&#xff0c;打算把它转换成.exe文件。点击生成的exe文件时&#xff0c;出现了如下弹窗。 2 问题分析 根据错误描述&#xff1…

国际黄金在哪里买?

国际黄金可以在以下几个主要的市场和渠道进行购买&#xff1a; 1. 黄金交易所&#xff1a;国际上有多个黄金交易所&#xff0c;其中最知名的是伦敦金属交易所&#xff08;London Bullion Market Association&#xff0c;简称LBMA&#xff09;。LBMA是全球最大的黄金交易市场&am…

Arrays --Java学习笔记

Arrays 用来操作数组的一个工具类 Arrays类提供的常见方法&#xff1a; 代码演示&#xff1a; import java.util.Arrays; import java.util.function.IntToDoubleFunction; import java.util.function.IntUnaryOperator;public class Arrays类 {public static void main(Str…

[JAVAEE]—进程和多线程的认识

文章目录 什么是线程什么是进程进程的组成什么是pcb 进程概括线程线程与进程的关系线程的特点 创建线程创建线程方法创建线程的第二种方法对比 其他的方式匿名内部类创建线程匿名内部类创建Runable的子类lambda表达式创建一个线程 多线程的优势 什么是线程 什么是进程 首先想…

OpenCASCADE开发指南<七>:OCC 中的数学基本类型和数学算法

1 标准对象的集合容器 在处理现实问题时&#xff0c;经常将问题抽象成一个数学模型&#xff0c;接着对模型求解&#xff0c; 然后将解提取出来以解决现实问题。 其实在 CAD 软件中&#xff0c; 主要解决的就是数学模型。因此&#xff0c;本节将描述 OCC 的数学基本类型和数学算…

JavaWeb06-MVC和三层架构

目录 一、MVC模式 1.概述 2.好处 二、三层架构 1.概述 三、MVC与三层架构 四、练习 一、MVC模式 1.概述 MVC是一种分层开发的模式&#xff0c;其中 M&#xff1a;Model&#xff0c;业务模型&#xff0c;处理业务 V&#xff1a; View&#xff0c;视图&#xff0c;界面展…