第一个Mybatis项目

(一)为什么要用Mybatis?

(1)Mybatis对比JDBC而言,sql(单独写在xml的配置文件中)和java编码分开,功能边界清晰,一个专注业务,一个专注数据。
(2)Mybatis是持久层框架,避免了大部分JDBC代码和手动设置参数以及获取结果集。
(3)Mybatis可以用简单的XML或注解进行配置和原始映射,将接口和Java对象映射成数据库中的记录。(不用像JDBC中实体类属性一 一对应表列名)
(4)Mybatis是一个半自动的ORM框架。

(二)Mybatis项目构建

1、开发环境准备
(1)单击SSM2项目名,右键new一个module,选择“Maven Archetype”,命名为mybatis01,并给其指定gav:
在这里插入图片描述(2)在pom.xml中导入相关jar包:

<!--导入MyBatisHelloWorld相关jar包--><dependencies><!--导入MySQL的驱动包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><!--导入MyBatis的jar包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--log4j--><!--日志记录:查看sql语句,参数绑定,查询结果查看--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies>

(3)创建ssm数据库及两个表
在这里插入图片描述
(4)创建实体类
对应employees表在src的main下面的java文件夹下新建com.atguigu.bean文件夹,里面新建一个实体类Employee,对应表的列名新建对应属性。
在这里插入图片描述
2、MyBatis框架的搭建
(1)创建持久层接口
在src的main下面的java文件夹下新建com.atguigu.dao文件夹,在里面新建EmployeeDao接口,里面只写了一个根据主键查询Employee对象的抽象方法:

public interface EmployeeDao {//根据主键查询Employee对象Employee getById(Integer id);
}

(2)创建接口的实现类
Mybatis通过映射文件替代持久层接口的实现类(将sql语句写在配置文件内)。
在main的resource文件夹下新建EmployeeDao.xml文件,里面要写的头信息去哪里找呢?
去官网链接,选择“入门”,找到“探究已映射的SQL”:
在这里插入图片描述里面的代码就是我们需要的,复制一份到EmployeeDao.xml中,进行修改:

<?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的属性:指定映射文件对应的持久层接口是谁?所以属性值是接口全类名-->
<mapper namespace="com.atguigu.dao.EmployeeDao"><!--实现该抽象方法:Employee getById(Integer id); --><select id="getById" parameterType="int" resultType="com.atguigu.bean.Employee">select id,last_name lastName,email,gender,salary,dept_id deptId from employees where id=#{id}</select>
</mapper>

3、创建Mybatis的核心配置文件
设置你要连接的数据库是哪个,加载映射文件。
在main的resource文件夹下新建mybatis-config.xml文件,里面要写的头信息去哪里找呢?
去官网链接,选择“入门”,找到“从XML中构建SqlSessionFactory”:
在这里插入图片描述
将代码复制一份到mybatis-config.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><!--环境:设置数据库的连接信息:讲完Spring之后,不用这个了--><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/ssm"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!--加载映射文件--><mappers><mapper resource="EmployeeDao.xml"/></mappers>
</configuration>

4、测试
在test文件夹下的java文件夹下新建com.atguigu文件夹,在里面新建MyBatisTest类进行测试。

public class MyBatisTest {//下面的代码,后面将Spring之后都不用写,只是暂时对MyBatis做测试@Testpublic void testMyBatis(){try {//1. 加载MyBatis的核心配置文件InputStream input = Resources.getResourceAsStream("mybatis-config.xml");//注意:Resource导的是ibatis那个类里的,别导错了//2. 创建SqlSessionFactory工厂对象(设计模式之工厂模式)SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(input);//3. 从工厂内获得一个SqlSession对象(看做之前的Connection)SqlSession sqlSession = factory.openSession();//4. 通过SqlSession对象获取到EmployeeDao的对象//  (获得的肯定是EmployeeDao的实现类对象,MyBatis根据映射文件生成的)EmployeeDao employeeDao = sqlSession.getMapper(EmployeeDao.class);//5. 通过EmployeeDao调用方法即可Employee employee = employeeDao.getById(1);System.out.println("employee="+employee);//6. sqlSession对象需要关闭(按照常理应该在finally中关)sqlSession.close();} catch (IOException e) {throw new RuntimeException(e);}}
}

执行Test,可以看到控制台输出了id=1的Employee对象了:
在这里插入图片描述

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

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

相关文章

【C++】:多态

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关多态的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结…

Linux(CentOS7)上安装mysql

在CentOS中默认安装有MariaDB&#xff08;MySQL的一个分支&#xff09;&#xff0c;可先移除/卸载MariaDB。 yum remove mariadb // 查看是否存在mariadb rpm -qa|grep -i mariadb // 卸载 mariadb rpm -e --nodeps rpm -qa|grep mariadb yum安装 下载rpm // 5.6版本 wge…

XML映射文件

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"org.mybatis.example.BlogMapper&q…

conan 入门(三十二):package_info中配置禁用CMakeDeps生成使用项目自己生成的config.cmake

conanfile.py中定义的package_info()方法用于向package的调用者(conumer)提供包库名&#xff0c;编译/连接选项&#xff0c;文件夹等等信息&#xff0c;有了这些信息构建工具的generator就可以根据它们生成对应的文件&#xff0c;用于调用者引用package. 比如基于cmake的CMakeD…

安全地公网访问树莓派等设备的服务 内网穿透--frp 23年11月方法

如果想要树莓派可以被公网访问&#xff0c;可以选择直接网上搜内网穿透提供商&#xff0c;一个月大概10块钱&#xff0c;也有免费的&#xff0c;但是免费的速度就不要希望很好了。 也可以选择接下来介绍的frp&#xff0c;这种方式不需要付费&#xff0c;但是需要你有一台有着公…

vue3自定义拖拽指令

<template><div v-move class"box"></div> </template><script setup lang"ts"> import { Directive } from vue const vMove:Directive (el:HTMLElement) >{const mousedown (e:MouseEvent) >{// 鼠标按下const s…

【Golang】解决使用interface{}解析json数字会变成科学计数法的问题

在使用解析json结构体的时候&#xff0c;使用interface{}接数字会发现变成了科学计数法格式的数字&#xff0c;不符合实际场景的使用要求。 举例代码如下&#xff1a; type JsonUnmStruct struct {Id interface{} json:"id"Name string json:"name"…

Linux 的性能调优的思路

Linux操作系统是一个开源产品&#xff0c;也是一个开源软件的实践和应用平台&#xff0c;在这个平台下有无数的开源软件支撑&#xff0c;我们常见的apache、tomcat、mysql等。 开源软件的最大理念是自由、开放&#xff0c;那么Linux作为一个开源平台&#xff0c;最终要实现的是…

uniApp微信支付实现

后端&#xff1a;小程序下单 - 小程序支付 | 微信支付商户文档中心 服务端需要请求&#xff1a;https://api.mch.weixin.qq.com该地址获取微信支付Api接口需要的参数。 服务端请求接口需要的Body参数&#xff1a; 客户端&#xff08;前端&#xff09;需要调用&#xff1a;wx.…

12V降3.3V100mA稳压芯片WT7133

12V降3.3V100mA稳压芯片WT7133 WT71XX系列是一款采用CMOS工艺实现的三端高输入电压、低压差、小输出电流电压稳压器。 它的输出电流可达到100mA&#xff0c;输入电压可达到18V。其固定输出电压的范围是2.5V&#xff5e;8.0V&#xff0c;用户 也可通过外围应用电路来实现可变电压…

加载minio中存储的静态文件html,不显示样式与js

问题描述:点击链接获取的就是纯静态文件,但是通过浏览器可以看到明明加载了css文件与js文件 原因:仔细看你会发现加载css文件显示的contentType:text/html文件,原来是minio上传文件时将所有文件的contentType设置成了text/html 要在上传时指定文件,根据文章的类型指定的Conten…

win10开机黑屏只有鼠标?这份指南帮你轻松解决!

win10是一个出色的操作系统&#xff0c;但有时用户可能会遇到开机后只有鼠标显示在屏幕上的问题&#xff0c;这种情况可能会让人感到困惑和沮丧。在本文中&#xff0c;我们将介绍三种解决win10开机黑屏只有鼠标的方法&#xff0c;以帮助您快速恢复正常的桌面环境。 方法1&#…

Ubuntu18.4中安装wkhtmltopdf + Odoo16配置【二】

deepin Linux 安装wkhtmltopdf 1、先从官网的链接里下载linux对应的包 wkhtmltopdf/wkhtmltopdf 下载需要的版本&#xff0c;推荐版本&#xff0c;新测有效&#xff1a; wkhtmltox-0.12.4_linux-generic-amd64.tar.xz 2、解压下载的文件 解压后会有一个wkhtmltox文件夹 3…

CTA-GAN:基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影 CT到增强CT的合成技术

Generative Adversarial Network–based Noncontrast CT Angiography for Aorta and Carotid Arteries 基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影背景贡献实验方法损失函数Thinking 基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影 https://github.com/ying-f…

可自行DIY单TYPE-C接口设备实现DRP+OTG功能芯片

随着USB-C接口的普及&#xff0c;欧盟的法律法规强制越来越多的设备开始采用这种接口。由于 USB-C接口的高效性和便携性&#xff0c;使各种设备之间的连接和数据传输变得非常方便快捷&#xff0c;它们不仅提供了强大的功能&#xff0c;还为我们的日常生活和工作带来了极大的便利…

ssm+vue的企业文档管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的企业文档管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

Talk | 牛津大学博士后研究员边佳旺:SC-DepthV3-动态场景中的自监督单目深度估计

本期为TechBeat人工智能社区第550期线上Talk。 北京时间11月23日(周四)20:00&#xff0c;牛津大学博士后研究员—边佳旺的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “SC-DepthV3&#xff1a;动态场景中的自监督单目深度估计”&#xff0c;介绍…

Vocoder,声码器详解——语音信号处理学习(十)

参考文献&#xff1a; [1] Vocoder (由助教許博竣同學講授)哔哩哔哩bilibili [2] Oord A, Dieleman S, Zen H, et al. Wavenet: A generative model for raw audio[J]. arXiv preprint arXiv:1609.03499, 2016. [3] https://deepmind.com/blog/article/wavenet-generative-mode…

window.requestAnimationFrame+localStorage+canvas实现跨窗口小球连线效果

文章目录 前言效果代码后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;感谢大家…

FPGA----ZCU106使用petalinux 2019.1的第一个app开发

1、petalinux在zcu106上的构建参见前文 FPGA----ZCU106使用petalinux 2019.1&#xff08;全网最详&#xff09;-CSDN博客文章浏览阅读31次。本文完成了Vivado 2019.1版本下的基于ZCU106的全部linux系统移植https://blog.csdn.net/qq_37912811/article/details/1345197352、我们…