认识Mybatis和搭建Mybatis初始环境(Java)

news2024/9/20 8:49:03

首先我们需要知道在Java中连接数据库的底层就是JDBC,但是JDBC存在诸多弊端,如硬编码,代码重复度高,SQL参数固定,属于底层技术,结果集映射麻烦等。为了解决这些弊端,官方为我们提供了一些ORM模型框架,而Mybatis就是一款半自动的ORM模型。下面我们一起学习了解

1.什么是Mybatis:

        Mybatis是一款ORM(对象结果集映射)模型,支持定制SQL,存储过程以及高级映射,可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJO映射成数据库中的记录

2.Mybatis和Hibernate的区别:(半自动化指需要手写SQL,全自动不用手写)

        ·Hibernate属于全自动化ORM模型,Mybatis属于半自动化ORM模型

        ·Hibernate简化dao层,不用考虑SQL语句的编写和结果映射,重点放在业务逻辑上;而Mybatis需要手写SQL语句以及结果映射。

         ·Hibernate是一个重量级的框架,内部生成SQL语句,反射操作太多,导致性能下降;Mybatis是一个轻量级的框架,需要手写SQL语句,有较少的反射操作

         ·Hibernate不方便做SQL优化,遇到较复杂的SQL语句需要绕过框架实现复杂,对多字段的结构进行部分映射困难;Mybatis不仅可以做SQL优化还可以SQL与java分离,还可以自行编写映射关系,复杂的SQL语句Mybatis效率更高

Mybatis优势:可以进行更细致的SQL优化,

Hibernate:dao层开发简单,Mybatis需要维护SQL和结果映射,Hibernate数据库移植性好

2.Mybatis环境搭建:注意数据库环境必须完好

        第一步:下载Mybtais软件包和依赖包:

        Mybatis3.5.2 百度网盘分享链接:https://pan.baidu.com/s/1vP4W2jCU633RB_o9MnA4PA?pwd=1111 提取码: 1111

       也可通过官方地址下载:https://mybatis.org/mybatis-3/

        

 3.Mybatis包解压缩后的目录结构介绍;

               重点:lib文件夹下的所有jar包和Mybatis-3.5.2.jar  :搭建Mybatis环境jar包

                        Mybatis-3.5.2.pdf:Mybatis的官方使用文档

 4.创建项目架构(java普通项目即可)并导入jar包:

        并在项目下建立一个与src目录同级的lib包,将所有的jar包复制进去,并add build path

        同时将连接数据库的jar:mysql-connector-java-xxx.jar一并添加(此处未分享,可取maven中央仓库,或官方网站下载)

5.创建配置文件,并放入src目录下:mybatis-config.xml

              注意:此时数据的连接驱动版本和数据库用户名以及密码的更改

                此时Mybatis的环境已经搭建完毕。下面我们进行测试

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT" />
				<property name="username" value="数据库用户名" />
				<property name="password" value="数据库密码" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!--文件路径  / 划分,有后缀:com/ape/mapper/StudentMapper.xml  -->
		<mapper resource="com/ape/mapper/StudentMapper.xml" />
	</mappers>
</configuration>
 6.测试Mybatis环境是否正确搭建:
 
        1.创建bean包下的实体类:
public class Student {
	private int sid;
	private String sname;
	private Date birthday;
	private String ssex;
	private int classid;
	public int getSid() {
		return sid;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getSsex() {
		return ssex;
	}
	public void setSsex(String ssex) {
		this.ssex = ssex;
	}
	public int getClassid() {
		return classid;
	}
	public void setClassid(int classid) {
		this.classid = classid;
	}
	public Student(int sid, String sname, Date birthday, String ssex, int classid) {
		super();
		this.sid = sid;
		this.sname = sname;
		this.birthday = birthday;
		this.ssex = ssex;
		this.classid = classid;
	}
	public Student() {
		super();
	}
	@Override
	public String toString() {
		return "Student [sid=" + sid + ", sname=" + sname + ", birthday=" + birthday + ", ssex=" + ssex + ", classid="
				+ classid + "]";
	}
	
        2.创建Mapper包下的Mapper映射文件:(包含SQL语句,id:唯一标识,resultType:结果集映射类型)
<?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">
<mapper namespace="test">
	<!--
		sqlMapper 文件  执行方法,和sql语句映射
	  -->
	<!--类路径  .分割, 无后缀 :  com.ape.bean.Student-->
 	<select id="findStudentAll" resultType="com.ape.bean.Student">
 		select * from student 
 	</select>
</mapper>

         3.创建Test测试类:

public static void main(String[] args) {
		
		
		try {
			//1.加载配置文件
			InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
			
			//2.创建工厂
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
			
			//3.执行sql
			//执行对象
			SqlSession sqlSession = factory.openSession();

			List<Student> stulist = sqlSession.selectList("findStudentAll");
            //输出list
			stulist.forEach(System.out::println);
			
			//4.释放连接
			sqlSession.close();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
         4.运行结果:由结果可知,搭建环境成功,获取数据库表的全部信息

 

 此处,我们对搭建mybatis环境作以总结:

        1.先下载依赖包

        2.导包,并添加至环境中

        3.创建主配置文件。

好了,mybatis的环境搭建分享至此,希望对大家有所帮助

 

 

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

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

相关文章

基于大数据的混合音乐推荐系统的设计与设计(论文+源码)_kaic

摘 要 随着数据的不断增长和用户对随听随播的收听方式的习惯&#xff0c;开发一款音乐推荐系统变得越来越必要。为了满足这一需求&#xff0c;本论文采用Java语言、Vue以及数据库MySQL进行开发。系统的主要功能包括登录注册、音乐分类管理、音乐推荐管理、音乐资讯管理、音乐库…

Nacos-2.4.0最新版本,postgresql插件适配器修改分享

1. 背景 自前段时间&#xff0c;发表的一篇博文“Nacos-2.4.0最新版本docker镜像&#xff0c;兼容postgresql最新版本17和16” 有网友在评论区叫我出个修改源码的过程&#xff0c;今天就给大家简单分享一下关于“Nacos最新版&#xff08;2.4.0&#xff09;的postgresql插件适…

一些主流在线测长仪品牌!几毫米到几十米均可检测!

在线测长仪应用于生产线中长度尺寸检测&#xff0c;在各种产品中&#xff0c;总有形形色色的产品需要对长度进行检测&#xff0c;本文介绍3个测长仪品牌。 深圳市中图仪器股份有限公司 中图 SJ5100系列测长仪采用超高精度全自动光栅测长机&#xff0c;在 SJ5100光栅测长机的基础…

web通用漏洞

web通用漏洞 文章目录 web通用漏洞1. SSRF1. gopher伪协议2. 常见绕过1. ip地址绕过2. DNS重绑定攻击 3. mysql未授权4. tomcat漏洞5. redis未授权写webshell6. redis 未授权写入ssh公钥7. redis 未授权计划任务shell反弹 2. XXE测试 3. XSS4. CSRF关于vmware的网络参考 1. SSR…

【工具】图片背景移除界面 UI 源码

移除图片背景的UI 照片背景移除和填充颜色的用户界面 仓库地址&#xff1a;https://github.com/MengWoods/remove-background-ui/tree/main 介绍 该项目提供了一个基于 removebg 库的用户界面&#xff0c;用于从输入的照片中移除背景&#xff0c;并用不同的颜色填充背景。 …

设计模式18-中介者模式

设计模式18-中介者模式&#xff08;Mediator&#xff09; 动机定义结构类图解释&#xff1a;交互方式&#xff1a;左边流程图右边流程图联系中介者模式 C代码推导优缺点应用总结 动机 在软件构建过程中&#xff0c;经常会出现多个对象互相关联交互的情况。他们之间常常会维持一…

认真学习JVM几种类加载器

【1】类加载器的分类 JVM支持两种类型的类加载器 。分别为引导类加载器&#xff08;Bootstrap ClassLoader&#xff09;和自定义类加载器&#xff08;User-Defined ClassLoader&#xff09;&#xff08;JVM规范这样定义的&#xff09;。 从概念上来讲&#xff0c;自定义类加载…

轻闪PDF v2.14.9 解锁版下载及安装教程 (一款全能PDF转换器,支持自动补全标签)

前言 轻闪PDF(原傲软PDF编辑软件)是一款操作简单的全能PDF转换器,轻松实现PDF转换为Word,Excel或其他格式,以及PDF压缩,合并和图片文字识别OCR等功能.这款pdf编辑转换软件几乎支持所有常见文档格式,一键完成PDF与其他文档互相转换,并含有PDF合并,压缩,图片文字识别OCR等增值功…

[qt] 多线程应用01

源码: 点击此处 一 多线程应用 实现一个多线程的网络时间服务器&#xff0c;利用多线程功能的技术&#xff0c;为每个客户端返回当前的时间&#xff0c;并且在返回后自动退出。同时&#xff0c;服务器也会记录当前受到的请求次数。其实这相当于一个ntp时间服务器 二 服务器实…

C语言 | Leetcode C语言题解之第326题3的幂

题目&#xff1a; 题解&#xff1a; bool isPowerOfThree(int n){int count0;while(n){countn%3;n/3;}return count1?true:false;}

个人对TCP流量控制与拥塞控制的理解

TCP 协议和 UDP 协议 TCP 作为最常用的两大传输层协议之一&#xff0c;无疑是久经生产环境检验的。传输层有两个我们广泛使用的协议&#xff1a;UDP 协议、TCP 协议&#xff0c;我们一般会说前者是面向无连接的&#xff0c;后者是面向连接的。 这里的 “连接” 具体是什么意思…

Prometheus-v2.45.0 + 钉钉告警

目录 1. 创建一个钉钉内部群 2. 添加自定义机器人 3. 配置钉钉发送告警服务 4. 配置alertmanager&#xff0c;接入dingding 5. 配置告警消息发送模板 6. 修改配置规则文件 续接上篇&#xff1a;https://blog.csdn.net/Lzcsfg/article/details/140851688 相关软件包链接…

sqli-labs环境搭建以及部分sql注入

sqli-labs靶场搭建&#xff1a; 安装phpstudy并创建网页 初始化靶场 实现sql注入&#xff1a; less-1&#xff08;根据数据库的命令在超链接后输入?id1&#xff09; less-2&#xff08;如法炮制?id2&#xff09; less-3&#xff08;闭合单引号和括号&#xff09; less-9&am…

新增AI Copilot,DataEase开源数据可视化分析工具v2.9.0发布

2024年8月5日&#xff0c;人人可用的开源数据可视化分析工具DataEase正式发布v2.9.0版本。 这一版本的功能变动包括&#xff1a;导航栏新增Copilot入口&#xff0c;借助AI技术&#xff0c;通过自然语言交互实现即问即答&#xff0c;让数据分析更加直观和便捷&#xff1b;图表方…

vxe-pulldown下拉容器的使用,覆盖样式z-index来解决在Modal中初次显示在Modal的下层的问题。

1、官网的例子&#xff1a; 可以说这个vxe-pulldown用起来还是挺方便的。 2、代码&#xff1a; <template><div><vxe-pulldown ref"pulldownRef" popup-class-name"my-dropdown4" transfer><template #header><div class&quo…

FFMPEG 序列帧图片合成视频

需求&#xff1a; 将多张.png图片合成为视频 注意: 1需要Windows电脑 2将图片重命名 下载EXE 官网 https://ffmpeg.org/download.html#build-windows 解压后长这样 将图片和exe放在同一目录下 文件中找个空白地&#xff0c;Shift右键 进入PowerShell 输入命令: ./ffm…

Chapter 27 封装

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、基本概念二、私有成员 前言 在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;封装是一个重要的概念&#xff0c;旨在保护数据并限制对对象内部状态的直接…

48天笔试训练错题——day41

目录 选择题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 编程题 1. 五子棋 2. Emacs计算器 选择题 1. 当发生拥塞时&#xff0c;TCP 有个机制&#xff0c;会从慢开始进行发送。 1. 把慢开始的门限值设为当前窗口的一半&#xff0c;即 ssthresh 1/2 * 8 4 KB 2. 把拥塞窗…

【TS】declare 全局声明方式

declare关键字 declare是描述TS文件之外信息的一种机制&#xff0c;它的作用是告诉TS某个类型或变量已经存在&#xff0c;我们可以使用它声明全局变量、函数、类、接口、类型别名、类的属性或方法以及后面会介绍的模块与命名空间。 declare关键字用来告诉编译器&#xff0c;某…

【C语言】关于字符串函数的使用及模拟实现(2)

一、字符串的复制 1.1 库函数strcpy的使用 在函数strcpy中&#xff0c;函数的返回类型为char* &#xff0c;参数部分首先是指向目标地址的指针&#xff0c;其次是指向源地址的指针(由于源地址中内容不受影响&#xff0c;则可以使用const修饰)&#xff0c;函数所需的头文件为st…