MyBatis基础

news/发布时间2024/8/25 10:06:43

1.什么是MyBatis?

MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。与其他ORM框架不同,MyBatis没有将Java对象与数据表关联起来,二十作为Java方法和sql语句的桥梁,我们一般称它为“半自动化ORM”框架。

2.MyBatis能做什么?

  • 定制化SQL,操纵数据库对象
  • 可以使用简单的xml或注解来配置和映射原生类型、接口和Java的POJO为数据库中的记录
  • 动态SQL功能,更加灵活的使用SQL
  • 提供了插件增强机制,可以继承其他的插件,如分页

3.与Hibernate对比

  • Hibernate:全自动化ORM框架,数据库移植性好,基础业务几乎不需要写sql,易学难精,上手简单但熟练使用需要阅读大量文档,框架结构复杂。
  • MyBatis:半自动化ORM框架,数据库移植性一般,基础业务仍需写sql,但是可以通过Mapper来简化,易学易用,上手简单,结构精简清晰。

对比发现 :H适合在需求明确、业务固定的项目中使用;M适合在需求多变,快速迭代的项目中使用

4.注意事项:

  • MyBatis在开发中会书写大量的SQL,对于SQL关键字我们统一大写
  • 在MyBatis标签中书写sql语句是可以不用在句尾加 ;的,但在其他环境还是加上 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

5.MyBatis的基础使用

  • 得到MyBatis配置信息,Configuration类,Configuration负责MyBatis架构中的配置部分,例如:dataSource数据源信息都会交给Configuration去管理;Environment是Configuration 中的一部分,而PooledDataSource和JdbcTransactionFactory又是Environment中的一部分,他们是属于层层递进的关系。其中JdbcTransactionFactory表示事务工厂,当MyBatis 需要新建事务的时候,会通过它来新建;PooledDataSource表示数据源,通过其构造参数,我们传入了数据库url,数据库用户和密码等配置;Configuration可以有多个Environment,因此每个Environment都必须有唯一的id,即代码中的development,将这些配置搭配组合后就是一个可用的Configuration.
  • 通过Configuration 来创建SqlSessionFactory,Mybatis是通过会话的方式来执行sql的,因此我们必须拥有一个会话创建器,即会话工厂。
  • 新建SqlSession来执行sql。有了SqlSessionFactory之后,我们可以方便的新建会话,并通过会话来执行sql
package com.gongrf;import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;@SuppressWarnings({"SqlResolve", "SqlNoDataSourceInspection", "Duplicates"})
public class StartNoXml {public static void main(String[] args) throws SQLException {// 无需xml配置的方式使用MyBatis// 准备jdbc事务类JdbcTransactionFactory jdbcTransactionFactory = new JdbcTransactionFactory();// 配置数据源PooledDataSource dataSource =new PooledDataSource("com.mysql.cj.jdbc.Driver","jdbc:mysql://localhost:3306/sys?useSSL=false","root", "root123");// 配置环境,向环境中指定环境id、事务和数据源Environment environment = new Environment.Builder("development").transactionFactory(jdbcTransactionFactory).dataSource(dataSource).build();// 新建 MyBatis 配置类Configuration configuration = new Configuration(environment);// 得到 SqlSessionFactory 核心类SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);// 开始一个 sql 会话SqlSession session = sqlSessionFactory.openSession();// 得到 sql 连接并运行 sql 语句PreparedStatement preStatement = session.getConnection().prepareStatement("SELECT * FROM user WHERE id = ?");preStatement.setInt(1, 1);ResultSet result = preStatement.executeQuery();// 验证结果while (result.next()) {System.out.println("username: " + result.getString("username"));}// 关闭会话session.close();}
}

  

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

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

相关文章

hit-plane

设置IP方法: 当是直接在这里修改函数名的 这里用设置IP的方法 拓展一下知识 在此下断点 运行到这里 如上设置IP 运行得到flag还有一种方法是:慢慢跟getflag函数的伪代码,本质上是函数嵌套,可以慢慢跟。另外:为什么直接改了会崩溃,这是因为printf后面的参数传少了"%…

GPU图形渲染分析

GPU图形渲染分析 1 概述 高强度图形是当代计算机系统的标志。今天的计算机,从智能手机到高端台式机,都使用各种复杂的视觉效果来增强用户体验。此外,用户还可以使用计算机玩图形密集型游戏、观看高清视频,以及进行计算机辅助工程设计,所有这些应用程序都需要大量的图形处理…

SWDDmaze

1.分析还原逻辑 这是一道需要nc的RE远程题,但是也给了我们文件进行分析 这是我么进去后的main,进introduce()和work()看看 这里的介绍告诉我们这个地图明显就是一个动态的地图,没走一步变一次 我们nc也是知道的这个work()函数里面则是我们重点要分析的 move()里面看看 看看…

Linux第八次总结(期末复习版)

没啥好总结的,坐第一排学了什么都在图里了

【SpringBootWeb入门-10】分层解耦-IOCDI入门

1、入门前言 上一篇我们讲解了分层解耦的思想并且引出了两个概念:控制反转IOC、依赖注入DI,本篇我们需要将思想落地为具体的代码实现,接下来我们将进入IOC与DI的入门程序。 在入门程序当中,我们主要要完成的就是Conroller层与Service层的解耦,以及Service层与DAO层的解耦,…

一篇文章带你掌握性能测试工具——Jmeter

一篇文章带你掌握性能测试工具——Jmeter 在目前的中大型企业中,仅仅进行功能测试已经不足以满足企业的需求,在重大客户基数下性能测试将会直接影响到用户体验 所以在这篇文章中我们将会学习性能测试的相关知识以及常用工具Jmeter 我们将会从以下角度进行介绍:性能测试基础信…

CMS系统搭建教程

1、 环境说明 centos7.9 2核2G,php7.2,mysql5.7.40,nginx1.22.1,宝塔8.0.4 2、创建站点创建站点得时候顺便创建数据库,记录数据库链接信息 3、上传fastadmin框架上传fastadmin_1_3_3_20220121.zip到创建的站点,然后解压 4、配置站点5、配置伪静态6、安装fastmin框架 输入…

28 VLAN高级技术

VLAN技术在园区网络中应用非常广泛,通常利用VLAN进行广播域的隔离,每个VLAN属于一个广播域。网络规划时需要为每个广播域分配一个网关,如果VLAN数量过多,会导致IP地址规划难度加大,甚至会出现大量IP地址的浪费。VLAN聚合概述 VLAN聚合(VLAN Aggregation,也称Super-Vlan)…

svn不上传.net的bin、obj等文件路径

1、打开svn的setting2、找到通用中的Subversion3、修改以上红框中文本*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__ *.rej *~ #*# .#* .*.swp .DS_Store [Tt]humbs.db bin obj 4、修改文本文件5、新增bin obj的文件路径 6、点击应用、确认

java抽象类

一、概述二、抽象类的特点 示例: 三、抽象类的成员特点

java高级笔记汇总

一、理论知识背诵汇总篇 1、Java常用类System类 Date类(日期类) DateFormat类(日期格式化类) SimpleDateFormat类 Math类 Random类 BigInteger(大整数)类 BigDecimal(大小数)类 Timer定时器2、枚举(将类的对象固定下来) 只能使用它的对象,而不能增加和修改枚举的属性…

【THM】钢铁山

找到本月最佳员工是bill Harper 发现运行在8080的是Rejetto HTTP File Server,然后去exploit上寻找利用漏洞 用msf获得shell 拿到了题目说的用户标志 权限提升为了枚举这台机器,我们将使用一个名为 PowerUp 的 powershell 脚本,其目的是评估 Windows 机器并确定任何异常情况…

Adobe Acrobat 2023安装教程

一、产品介绍: Adobe Acrobat 中文版是一款由Adobe官方推出的PDF编辑和阅读软件,是目前互联网上最专业最优秀的桌面pdf解决方案,它将全球最佳的PDF解决方案提升到新的高度,配有直观触控式界面,通过开发强大的新功能,使用户能在任何地方完成工作。新工具中心可更简单迅速地…

MySQL的SQL语句

数据库管理系统的层次 \(数据库\rightarrow表\rightarrow行列\) DDL DDL是data definition language的缩写数据定义语言,而其作用是在于对数据库和数据库中的表的创建的基本操作 这里的增删改查实际上是对于数据库,数据表本身的性质的一的增删改查 所以DDL是数据的数据库表和…

NodeJS项目build成为本地镜像上传阿里云ACR

先注册阿里云账号 选择“容器镜像服务” -> “个人实例”。由于是测试目的,个人版也可以接受。创建命名空间创建镜像仓库选择本地仓库 - 本示例会从本机推送镜像创建成功后,会有提示相关命令创建一个nodejs项目 package.json {"name": "docker_web_app&quo…

又有新框架上线了,测试、AI 通通有「GitHub 热点速览」

本周热点之一可能就是 Apple 刚开源便获得 8k+ star 的机器学习框架 mlx,顺带官方开源的 mlx-example(示例仓)也在热门榜上有一席之位,据说它已经跑通了大模型 Llama 7B,如果你最近刚入手了 M3 的苹果机,不妨来试试这个专为 Apple 芯片而生的框架。 除了跑在 Apple 芯片上…

汽车传感器图例集

汽车传感器图例集 人工智能芯片与自动驾驶

ASP.NET Core 8 在 Windows 上各种部署模型的性能测试

ASP.NET Core 8 在 Windows 上各种部署模型的性能测试 我们知道 Asp.net Core 在 windows 服务器上部署的方案有 4 种之多。这些部署方案对性能的影响一直以来都是靠经验。比如如果是部署在 IIS 下,那么 In Process 会比 Out Process 快;如果是 Self Host 那么使用 HttpSys 服…

Linux课程随堂博文五

一、高级权限 1、SGID权限 在目录/home下创建一个目录hr,将hr组添加到该目录下,查看目录所属组已修改为hr。在/home目录下创建一个文件file2,该文件属组为root,并没有继承上级目录的hr组。在一个目录上添加SGID,该目录下新创建的文件会继承其属组。2、Sticky权限 添加Stic…
推荐文章