java后端框架-MyBatis

一、概述

1、起源

MyBatis本是Apache下的开源项目,名为iBatis,2010年转投谷歌,从iBatis3.x开始更名为MyBatis

2、优点

(1)优秀的数据持久层框架(对jdbc做了轻量级封装)

3、特点

(1)对jdbc中接口进行封装的同时还提供了一些自己的类实现

(2)将数据库连接配置提取到了xml文件

(3)将sql语句提取到了xml文件

(4)可使用注解方式执行sql

(5)可实现对象关系映射orm(将数据库中的记录映射到java对象pojo)

(6)支持动态sql(可在sql中进行逻辑处理)以及数据缓存

二、前期准备

1、创建数据库并创建一个表

2、创建maven项目

3、添加依赖

        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

4、创建mybatis配置文件(核心配置文件)

<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.2" level="project" />
    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
    <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
  </component>
</module>

5、创建一个访问接口和一个类

public interface AdminDao {
      Admin findAdminById(int id);
}


public class Admin {
        private int id;
        private String account;
        private String password;
        private String gender;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Admin{" +
                "id=" + id +
                ", account='" + account + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}

6、创建一个映射文件

<?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">
<!-- namespace 接口地址 全类名 -->
<mapper namespace="com.ffyc.mybatispro.dao.AdminDao">
     <select id="findAdminById" parameterType="int" resultType="com.ffyc.mybatispro.model.Admin">
         select * from admin where id = #{id}
     </select>
</mapper>

三、测试mybatis的功能-从数据库查询中获取一个封装好查询结果的对象

public static void main(String[] args) throws IOException {
        // 1、读取mybatis核心配置文件
        InputStream inputStream= Resources.getResourceAsStream("mybatis.xml");
        // 2、创建SqlSessionFactory,用来创建SqlSession
        SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
        // 3、创建SqlSession对象,负责每一次与数据库会话
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 4、创建访问接口的代理对象
        // 通过命名空间直接调用配置文件中的sql
        //Admin admin = sqlSession.selectOne("aaa.findAdminById", 1);
        AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
        // 5、通过代理对象访问接口中的方法,最终由代理对象去调用sql映射文件中与方法名相同的id对应的sql
        Admin admin = adminDao.findAdminById(1);
        System.out.println(admin);
        // 6、关闭本次会话
        sqlSession.close();
    }

四、总结

使用mybatis与数据库进行会话核心有4个类加5个步骤

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

InputStream inputStream= Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
sqlSession.close();

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么看qq注册时间?你的qq生日居然是这样查看的!

QQ账号就像是一个穿越时空的日记本&#xff0c;每一个聊天记录、每一条动态都是时间的印记。而QQ注册时间&#xff0c;便是这本日记本的开篇第一章&#xff0c;它见证了你的网络生活的起点。怎么看qq注册时间呢&#xff1f;别着急&#xff0c;接下来我将为你揭晓答案。 操作环境…

MATLAB分类与判别模型算法:基于Fisher算法的分类程序【含Matlab源码 MX_002期】

算法思路介绍&#xff1a; 费舍尔线性判别分析&#xff08;Fishers Linear Discriminant Analysis&#xff0c;简称 LDA&#xff09;&#xff0c;用于将两个类别的数据点进行二分类。以下是代码的整体思路&#xff1a; 生成数据&#xff1a; 使用 randn 函数生成随机数&#x…

11. Django 常用的Web应用程序

11. 常用的Web应用程序 Django为开发者提供了常见的Web应用程序, 如会话控制, 缓存机制, CSRF防护, 消息框架, 分页功能, 国际化和本地化, 单元测试和自定义中间件. 内置的Web应用程序大大优化了网站性能, 并且完善了安全防护机制, 同时也提高了开发者的开发效率.11.1 会话控制…

IO系列(九) -什么是零拷贝

一、摘要 相信不少的网友&#xff0c;在很多的博客文章里面&#xff0c;已经见到过零拷贝这个词&#xff0c;会不禁的发出一些疑问&#xff0c;什么是零拷贝&#xff1f; 从字面上我们很容易理解出&#xff0c;零拷贝包含两个意思&#xff1a; 拷贝&#xff1a;就是指数据从…

宠物空气净化器:猫毛过敏者的终极解决方案,养猫不再是梦!

我有一位朋友&#xff0c;猫猫的深度爱好者。但是每当与猫咪接触的时候就会出现过敏反应&#xff0c;例如浑身发痒、打喷嚏、呼吸困难、起红疹等。对此&#xff0c;有专家给出权威的解释&#xff1a;引发铲屎官过敏的“罪魁祸首”是一种叫做Feld1的蛋白质成分&#xff0c;而这种…

性能击败99%PC用户,旗舰性能CPU 13700KF +技嘉Z790 + 德静界 机散装机配置思路分享

性能击败99%PC用户&#xff0c;旗舰性能CPU 13700KF 技嘉Z790 德静界 机散装机配置思路分享 又到了一年一度的618年中促销&#xff0c;今年的618比往年要来的更早。 很多人已经感受到&#xff0c;5月各大电脑相关配件都开始了今年的促销让利。 凑此机会&#xff0c;我又装了…

IT学习笔记--Kubernetes

kubernetes组件&#xff1a; 一个Kubernetes集群主要是由控制节点&#xff08;master&#xff09;、工作节点&#xff08;node&#xff09;构成&#xff0c;每个节点都会安装不同的组件。 master&#xff1a;集群的控制平面&#xff0c;负责集群的决策 ApiServer&#xff1a…

蓝桥杯物联网竞赛_STM32L071KBU6_对于EEPROM的新理解

EEPROM写函数&#xff1a; void Function_GetEepromData(){Function_EepromRead(4, BUFF);OLED_ShowChar(0, 0, BUFF[0] 0);OLED_ShowChar(0, 2, BUFF[1] 0); BUFF[0] ;BUFF[1] ;HAL_FLASHEx_DATAEEPROM_Unlock();HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_WOR…

项目经理催开发进度的5大技巧

项目经理在催促开发进度时&#xff0c;采用的技巧对于项目成功至关重要。这不仅影响到项目的按时完成&#xff0c;还关系到团队的士气、效率和最终产品的质量。项目经理如果不去主动催促开发进度&#xff0c;可能导致项目延期&#xff0c;团队偏离原定路线&#xff0c;工作重点…

用于脑肿瘤分割的跨模态深度特征学习| 文献速递-深度学习肿瘤自动分割

Title 题目 Cross-modality deep feature learning for brain tumor segmentation 用于脑肿瘤分割的跨模态深度特征学习 01 文献速递介绍 作为最致命的流行病&#xff0c;脑肿瘤的研究越来越受到关注。本文研究了一种基于深度学习的自动分割胶质瘤的方法&#xff0c;称为脑…

java版CRM客户关系管理系统源码-CRM客户关系管理系统的技术架构与功能实现

CRM客户关系管理系统的技术架构与功能实现 一、引言 随着市场竞争的日益激烈&#xff0c;客户关系管理&#xff08;CRM&#xff09;已成为企业赢得市场、提升客户满意度、促 进业务增长的关键手段。本文旨在介绍一款先进的CRM客户关系管理系统的技术架构与功能实现&#xff0…

认识NoSql

SQL是结构化的&#xff0c;NoSql是非结构化的 SQL是关联的&#xff1a; Nosql是无关联的&#xff1a; SQL采用的是SQL查询&#xff1a; 语法固定&#xff0c;好处是&#xff1a;只要是关系型数据库&#xff08;Mysql,Oracle&#xff09;&#xff0c;都能够使用相同的语句进行查…

2024年PMP考试备考需要多长时间,每天学习多长时间?

这取决于您在PMP上投入的时间和效率&#xff0c;通常情况下&#xff0c;2-3个月就够了。如果您平时工作很忙&#xff0c;每天可以挤出一个小时来学习&#xff1b;如果时间比较充裕&#xff0c;可以花两个小时看书、做题和参加直播课。在备考之前&#xff0c;要先了解PMP每年的考…

PostgreSQL数据库提权

前面讲述了mysql、SqlServer、Redis数据库相关的提权方式&#xff0c;有兴趣的也可以去看看。 这里讲的postgreSQL数据库提权就是任意命令执行漏洞(CVE-2019-9193)。 目录 数据库简介 漏洞原理 影响版本 漏洞利用 利用前提 漏洞复现 复现准备 复现过程 漏洞修复 数据…

JVM学习-字节码指令集(二)

对象的创建与访问指令 创建指令 虽然类实例和数组都是对象&#xff0c;但Java虚拟机对类实例和数组的创建和操作使用了不同的字节码指令创建类实例指令&#xff1a;new 它接收一个操作数&#xff0c;指向常量池的索引&#xff0c;表示要创建的类型&#xff0c;执行完成后&am…

基于匹配追踪和最大重叠离散小波变换的ECG心电信号R波检测(MATLAB 2018a)

准确识别心电信号的R波是进行HRV分析的前提。因此&#xff0c;开发出准确的心电信号R波检测方法十分重要。近几十年来&#xff0c;提出的R峰检测方法主要分为两个阶段。第1阶段是预处理阶段&#xff0c;目的是对受不同噪声影响的原始心电信号进行降噪处理&#xff0c;从而实现增…

1794 jsp蛋糕店管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 蛋糕店管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了java设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

Pycharm打开django支持

在 PyCharm 中打开 “Settings/Preferences” -> “Languages & Frameworks” -> “Django”。 勾上Enable Django support 然后配置好文件根目录就好了

STM32FLASH闪存

文章目录 前言首先来回顾一下存储器映像FLASH简介闪存模块组织Flash基本结构&#xff08;关系&#xff09;图Flash解锁使用指针访问存储器FLASH操作Flash全擦除Flash页擦除Flash写入 选项字节选项字节操作选项字节擦除选项字节写入 器件电子签名注意闪存控制寄存器一览 前言 本…

Spring Boot 2 入门基础

学习要求 ● 熟悉Spring基础 ● 熟悉Maven使用 环境要求 ● Java8及以上 ● Maven 3.3及以上&#xff1a;https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-system-requirements 学习资料 ● 文档地址&#xff1a; htt…