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.hqwc.cn/news/537790.html

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

相关文章

2024年腾讯云学生用户便宜云服务器购买攻略

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…

libusb_Qt使用

Libusb libusb_github 建议直接下载库&#xff0c;编译好麻烦 QT调用 .pro文件添加&#xff1a; win32: LIBS -L$$PWD/LIB/libusb/x64/ -llibusb-1.0.cpp调用即可 #include "LIB/libusb/libusb.h" void class_name::fun(){/* 1. */libusb_init(NULL);/**/str…

rt-thread之sal+lwip的tcp客户端示例记录(接收非阻塞)

示例记录 #include "lwip_test.h" #include "lwip/sockets.h" #include "netdev.h"#define DBG_ENABLE #define DBG_TAG "lwip.tst" #define DBG_LVL DBG_LOG#include <rtdbg.h>#define SERVER_PORT 8080 #define SERVER_HOST …

1、计划任务介绍

Windows计划任务介绍 1、含义&#xff1a; 简单点就是定时执行任务。 在许多场景下&#xff0c;我们定时执行一些任务。比如&#xff1a;定时拉取、备份文件&#xff0c;更新代码等等操作。 WinR打开运行框&#xff0c;输入&#xff1a;control schedtasks&#xff0c;就会…

LLM和自动驾驶强强联合 | DriveDreamer-2:自动驾驶定制视频生成世界模型!

文章链接&#xff1a;https://arxiv.org/pdf/2403.06845.pdf 项目文档&#xff1a;https://drivedreamer2.github.io/ 自动驾驶是最近几年非常火热的方向&#xff0c;那LLM和视频生成在自动驾驶领域有哪些应用呢&#xff1f;今天和大家一起学习一下最新的一篇工作————Driv…

多线程相关

JMM&#xff08;内存模型&#xff09; JMM三个特性&#xff1a; 原子性 一个或者多个操作在CPU执行的过程中不被中断的特性&#xff0c;要么全部成功&#xff0c;要么全部失败可见性 一个线程修改了共享变量的值后&#xff0c;其他线程能够立即看到这个修改有序性 程序执行的…

武汉LUG报名开启!这次我们来到了华中科技大学,3月23日(周六)来见面吧!

内容来源&#xff1a;deepin 社区 LUG 不间断&#xff0c;精彩不停歇&#xff0c;经过一个月的修整&#xff0c;2024年3月23日下午&#xff0c;我们将在华中科技大学东校区举办 3月 WHLUG&#xff0c;欢迎大家来到现场&#xff0c;和我们一起交流技术&#xff0c;分享自己学习过…

惊艳到了,每个开发人员都必须要知道的6个HTML属性!

前端训练营&#xff1a;1v1私教&#xff0c;终身辅导计划&#xff0c;帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello&#xff0c;大家好&#xff0c;我是 Sunday。 说起 HTML 很多同学都会认为&#xff0c;这不就是小菜一碟吗&#xff…

大型污水处理站运维公司怎么选择

大型污水处理站运维公司的选择是关乎环境保护和城市发展的重要决策。在如今污水治理领域日益重要的背景下&#xff0c;选择一家专业的运维公司对于确保污水处理站的高效运行、提高处理效果和保护环境具有关键意义。那么&#xff0c;我们应该如何选择适合自己的大型污水处理站运…

Css基础——精灵图(sprites)和字体图标

1、精灵图 1.1、精灵图的由来 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送 请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度。 因此&#xff0c;为了有效地减…

腾讯云服务器地域是什么?地域选择看着一篇就够了

腾讯云服务器地域怎么选择&#xff1f;不同地域之间有什么区别&#xff1f;腾讯云哪个地域好&#xff1f;地域选择遵循就近原则&#xff0c;访客距离地域越近网络延迟越低&#xff0c;速度越快。腾讯云百科txybk.com告诉大家关于地域的选择还有很多因素&#xff0c;地域节点选择…

Python (用户登录、身份归属地查询添加异常处理、绘制多角星、电影信息提取)

任务一&#xff1a;用户登录 登录系统通常分为普通用户与管理员权限&#xff0c;在用户登录系统时&#xff0c;可以根据自身权限进行选择登录。本任务要求实现一个用户登录的程序&#xff0c;该程序分为管理员用户与普通用户&#xff0c;其中管理员账号密码在程序中设定&#…