mybatis入门

Java的三大框架:Spring,SpringMVC,MyBatis

框架其实就是对通用代码的封装,提前写好了一堆接口和类,我们可以在做项目的时候直接引入这些接口和类,基于这些现有的接口和类进行开发,可以大大提高开发效率

JDBC的不足

代码繁琐,复用性低

了解Mybatis

MyBatis本质上就是对JDBC的封装,通过MyBatis完成CRUD

MyBatis在三层架构中属于持久化层,属于持久化框架

ORM思想--对象关系映射

ORM对象关系的映射

  • O(Object):Java虚拟机中的Java对象
  • R(Relational):关系型数据库
  • M(Mapping):将Java虚拟机中的Java对象映射到数据库表中一行记录,或是将数据库表中的一行记录映射成Java虚拟机中的一个Java对象

映射:把数据库中的一条记录转换成一个Java对象或者一个Java对象转换成数据库表中的一条记录的过程叫做映射

MyBatis框架实现了ORM思想

MyBatis可以将Java对象<-->数据库中的一条记录

MyBatis是一个半自动化的ORM,因为MyBatis框架中的SQL语句需要手动编写,比较灵活

像User这种类有三种叫法:pojo(普通Java类),bean,domain

MyBatis的优点
  • 支持定制化SQL,存储过程,基本映射以及高级映射
  • 避免了几乎所有的JDBC代码中手动设置参数以及获取结果集
  • 支持XML开发,也支持注解式开发(为了保证sql语句的灵活性,mybatis大部分采用xml开发)
  • 将接口和Java的pojo映射成数据库中的记录
  • 完全做到sql解耦合
  • 提供了基本映射标签
  • 提供了高级映射标签

提供了xml标签,支持动态SQL的编写

MyBatis入门

resources目录:
放在这个目录当中的,一般都是资源文件,配置文件
直接放到resources目录下的资源,等同于放到了类的根路径下

开发步骤
  1. 打包方式jar
  2. 引入依赖:
    -mybatis依赖
    -mysql驱动依赖
  3. 编写mybatis核心配置文件
    文件名不一定叫做mybatis-config
    放的位置也不一定在resources目录下,但一定是在根目录下的
  4. 编写XXXMapping.xml文件编写sql语句
  5. 在mybatis-config文件的mapper标签中指定编写sql语句的文件路径,resource会默认从类的根路径下查找文件
  6. 编写mybatis程序

从xml文件中构建sqlSessionFactory

mybatis有两个重要的配置文件:

  • mybatis-config.xml,这是核心配置文件,用来配置连接数据库的信息等
  • XxxxMapping.xml,这个文件是专门用来编写sql语句的文件

在Mapping.xml文件中编写sql语句时,id是sql语句的唯一标识,id代表了这条sql语句

编写mybatis程序

SqlSession是专门用来执行sql语句的,是一个Java程序和数据库之间得到一个会话

要想获取SqlSession对象就要先获取SqlSessionFactory对象

要想获取SqlSessionFactory对象就要先获取SqlSessionFactoryBuilder对象

通过SqlSessionFactoryBuilder的build方法来获取SqlSessionFactory对象

SqlSessionFactoryBuilder->SqlSessionFactory->SqlSession

 public static void main(String[] args) throws IOException {
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //需要传入一个输入流指向mybatis-config.xml
        InputStream ips = Resources.getResourceAsStream("mybatis-config.xml");//Resources.getResourceAsStream默认从根路径下开始查找资源
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(ips);
        //通过sqlSessionFactory的openSession方法获取sqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //返回值是影响数据库中的记录条数
     	int insertCar = sqlSession.insert("insertCar");
        System.out.println(insertCar);
        //sqlSession默认的是不自动提交,需要手动提交
        sqlSession.commit();
    }

一般情况下都是一个数据库对应一个SqlSessionFactory

mybatis中sql语句的结尾分号可以省略也可以不省略

以后凡是遇到resource的方法,大部分都是从类的根路径下开始加载

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

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

相关文章

【网络编程】-- 01 概述、IP

网络编程 1 概述 1.1 计算机网络 (连接分散计算机设备以实现信息传递的系统) 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&…

SmartChart:一站式数据可视化解决方案

在当今的数据驱动的世界中&#xff0c;数据可视化已经成为了一个重要的工具&#xff0c;它可以帮助我们理解复杂的数据集&#xff0c;并从中提取有价值的信息。SmartChart就是这样一个强大的数据可视化工具&#xff0c;它提供了一站式的数据可视化解决方案&#xff0c;无论你是…

(十五)Flask覆写wsgi_app函数实现自定义中间件

中间件 一、剖析&#xff1a; 在前面讲session部分提到过&#xff1a;请求一进来&#xff0c;Flask会自动调用应用程序对象【Flask(__name__)】的__call__方法&#xff0c;这个方法负责处理请求并返回响应&#xff08;其实如下图&#xff1a;其内部就是wsgi_app方法&#xff…

【重磅来袭!!!工程师必备初始化建工程软件】

重磅来袭&#xff01;&#xff01;&#xff01;工程师必备初始化软件 每个工程建立前&#xff0c;你是否为了要建立各种文件夹而烦恼&#xff1f;你是否为了因为工程每次文件夹不统一找不到文件而烦扰&#xff1f;来咯&#xff0c;Project Initial V1_0软件只需输入工程名称&am…

安装you-get(mac)

1、首先要有python环境 2、更新pip python -m pip install --upgrade pip 3、安装you-get pip install you-get;

keep-alive 是 Vue 的一个内置组件,用于缓存其他组件的实例,以避免重复渲染和销毁,它可以在需要频繁切换的组件之间提供性能优化

目录 keep-alive 使用 keep-alive 的示例代码&#xff1a; 手动清除组件缓存的示例代码&#xff1a; keep-alive 组件有以下几个优点&#xff1a; keep-alive 的原理&#xff1a; 使用 keep-alive 组件&#xff0c;你可以包裹需要缓存的组件&#xff0c;然后这些组件在切…

基于ssm安徽新华学院实验中心管理系统论文

摘 要 本安徽新华学院实验中心管理系统的设计目标是实现安徽新华学院实验中心的信息化管理&#xff0c;提高管理效率&#xff0c;使得安徽新华学院实验中心管理工作规范化、科学化、高效化。 本文重点阐述了安徽新华学院实验中心管理系统的开发过程&#xff0c;以实际运用为开…

Pytest+Allure生成自动化测试报告!

前言 在自动化测试中&#xff0c;有unittestHTMLTestRunner自动化测试报告&#xff0c;但是生成的测试报告不够美观详细&#xff0c;今天我们来学习一下PytestAllure生成自动化测试报告。 一&#xff1a;安装python中的allure依赖库 在dos窗口中&#xff0c;输入下面三个命令…

AntDesignBlazor示例——创建查询条件

本示例是AntDesign Blazor的入门示例&#xff0c;在学习的同时分享出来&#xff0c;以供新手参考。 示例代码仓库&#xff1a;https://gitee.com/known/AntDesignDemo 1. 学习目标 重构项目文件结构添加日期查询条件实现查询业务逻辑 2. 重构项目结构 在实现列表查询条件功…

【PCB设计】嘉立创EDA器件3D模型导入AD的方法

嘉立创EDA器件3D模型导入AD的方法 一、嘉立创EDA导出3D模型二、CAD编辑3D模型三、AD中加载3D模型 一、嘉立创EDA导出3D模型 在嘉立创EDA中找到对应的元器件&#xff0c;并生成PCB&#xff0c;选择导出3D文件 导出元件step模型 二、CAD编辑3D模型 用FreeCAD打开模型 删除…

JAVA全栈开发 MySql详解

一、数据库 1.数据储存在哪里&#xff1f; 硬盘、网盘、U盘、光盘、内存&#xff08;临时存储&#xff09; 数据持久化 使用文件来进行存储&#xff0c;数据库也是一种文件&#xff0c;像excel &#xff0c;xml 这些都可以进行数据的存储&#xff0c;但大量数据操作&#x…

学习设计模式的一个好网址

常用设计模式有哪些&#xff1f; (refactoringguru.cn)https://refactoringguru.cn/design-patterns

elasticsearch-head 启动教程

D:\elasticsearch-head-master>grunt server ‘grunt’ 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 npm install -g grunt-clinpm install

经历需求放缓,裁员1.7万人后,亚马逊股票还值得投资吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 亚马逊再次实现增长 尽管在疫情期间&#xff0c;很多电子商务公司都发展的很迅猛&#xff0c;但根据Statista的数据&#xff0c;亚马逊(AMZN)依然保持着对竞争对手的碾压&#xff0c;亚马逊目前约占美国电子商务市场总份额…

全志XR806蓝牙透传(单向)测试

评测三 蓝牙透传(单向) 有时无线透传在无法布线时有很方便的效用&#xff0c;不妨试试蓝牙透传&#xff0c;效果如下&#xff1a; 具体是无线数据->串口数据&#xff0c;串口数据->无线数据&#xff0c;目前前者实现了&#xff0c;后者还有些问题未解决&#xff0c; 实现…

每日一练:插入排序

1. 概念及原理 插入排序是一种简单直观的排序算法&#xff0c;其基本思想是将一个元素插入到已经排序好的部分&#xff0c;然后不断地重复这个过程&#xff0c;直到整个数组有序。下面是插入排序的算法原理&#xff1a; 初始状态&#xff1a; 数组被分为已排序和未排序两个部分…

2、RocketMQ源码分析(二)

RocketMQ的底层通信模块remoting remoting是RocketMQ的底层通信模块&#xff0c;RocketMQ底层通讯是使用Netty来实现的。本文通过对remoting源码进行分析&#xff0c;来说明remoting如何实现高性能通信的。 二、Remoting 通信模块结构 remoting 的网络通信是基于 Netty 实现&…

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含pytho、JS工程源码)+数据集+模型(四)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存1&#xff09;模型训练2&#xff09;模型保存 4. 上传结果1&#xff09;…

刷题学习记录(文件上传)

[GXYCTF 2019]BabyUpload 知识点&#xff1a;文件上传.htaccessMIME绕过 题目直接给题目标签提示文件上传的类型 思路&#xff1a;先上传.htaccess文件&#xff0c;在上传木马文件&#xff0c;最后蚁剑连接 上传.htaccess文件 再上传一个没有<?的shell 但是要把image/pn…

生态学、种间关系、进化

这里写自定义目录标题 参考资料种间关系Lynn Margulis共生体在进化过程中形成了一种互帮互助的机制 捕食&#xff1a;收割理论 进化思想史 参考资料 Symbiotic Communications: Where Marconi Meets Darwin 普通生态学(孙儒泳)高等教育出版社1998普通生态学(尚玉昌)北京大学出…