IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis初识和框架搭建
第一章 初识Mybatis
1.1 框架概述
1.2 Mybatis简介
-
Mybatis是一个半自动化持久化层ORM框架
-
ORM:Object Relational Mapping【对象 关系 映射】
- 将Java中的对象与数据库中表建议映射关系,优势:操作Java中的对象,就可以影响数据库中表的数据
-
Mybatis与Hibernate对比
- Mybatis是一个半自动化【需要手写SQL】
- Hibernate是全自动化【无需手写SQL】
-
Mybatis与JDBC对比
- JDBC中的SQL与Java代码耦合度高
- Mybatis将SQL与Java代码解耦
-
Java POJO(Plain Old Java Objects,普通老式 Java 对象)
- JavaBean 等同于 POJO
1.3 官网地址
- 文档地址:mybatis.org/mybatis-3/
- 源码地址:github.com/mybatis/mybatis-3
第二章 搭建Mybatis框架
导入jar包
编写配置文件
使用核心类库
2.1 准备
- 建库建表建约束
- 准备maven工程
2.2 搭建Mybatis框架步骤
-
导入jar包
<!--导入MySQL的驱动包--> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.37</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</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> -
编写核心配置文件【mybatis-config.xml】
-
位置:resources目标下
-
名称:推荐使用mybatis-config.xml
-
示例代码
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"> <!-- mysql8版本--> <!-- <property name="driver" value="com.mysql.cj.jdbc.Driver"/>--> <!-- <property name="url" value="jdbc:mysql://localhost:3306/db220106?serverTimezone=UTC"/>--> <!-- mysql5版本--><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/db220106"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!-- 设置映射文件路径--><mappers><mapper resource="mapper/EmployeeMapper.xml"/></mappers> </configuration>
-
-
书写相关接口及映射文件
-
映射文件位置:resources/mapper
-
映射文件名称:XXXMapper.xml
-
映射文件作用:主要作用为Mapper接口书写Sql语句
- 映射文件名与接口名一致
- 映射文件namespace与接口全类名一致
- 映射文件SQL的Id与接口的方法名一致
-
示例代码
<?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="com.atguigu.mybatis.mapper.EmployeeMapper"><select id="selectEmpById" resultType="com.atguigu.mybatis.pojo.Employee">SELECTid,last_name,email,salaryFROMtbl_employeeWHEREid=#{empId}</select> </mapper>
-
-
测试【SqlSession】
- 先获取SqlSessionFactory对象
- 再获取SqlSession对象
- 通过SqlSession对象获取XXXMapper代理对象
- 测试
2.3 添加Log4j日志框架
-
导入jar包
<!-- log4j --> <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version> </dependency> -
编写配置文件
-
配置文件名称:log4j.xml
-
配置文件位置:resources
-
示例代码
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"><param name="Encoding" value="UTF-8" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" /></layout></appender><logger name="java.sql"><level value="debug" /></logger><logger name="org.apache.ibatis"><level value="info" /></logger><root><level value="debug" /><appender-ref ref="STDOUT" /></root> </log4j:configuration>
-
相关文章:
IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis初识和框架搭建
第一章 初识Mybatis 1.1 框架概述 生活中“框架” 买房子笔记本电脑 程序中框架【代码半成品】 Mybatis框架:持久化层框架【dao层】SpringMVC框架:控制层框架【Servlet层】Spring框架:全能… 1.2 Mybatis简介 Mybatis是一个半自动化持久化…...
差分放大器工作原理(差分放大器和功率放大器区别)
差分放大器是一种特殊的放大器,它可以将两个输入信号的差异放大输出。其工作原理基于差分放大器的电路结构和差分输入特性。 一、差分放大器电路结构 差分放大器一般由四个基本电路组成:正反馈网络、反相输入端、共模抑制电路和差分输入端。其中…...
SystemV
a...
LiteOS同步实验(实现生产者-消费者问题)
效果如下图: 给大家解释一下上述效果:在左侧(顶格)的是生产者(Producer);在右侧(空格)的是消费者(Consumer)。生产者有1个,代号为“0”…...
redis的性能管理和雪崩
redis的性能管理 redis的数据是缓存在内存当中的 系统巡检: 硬件巡检、数据库、nginx、redis、docker、k8s 运维人员必须要关注的redis指标 在日常巡检中需要经常查看这些指标使用情况 info memory #查看redis使用内存的指标 used_memory:11285512 #数据占用的…...
python:关于函数内 * 和 / 是什么意思?
总结:如果你希望调用者使用函数时一定不能使用关键字传参,要求它使用位置进行传参,那么就可以把这些参数放在 / 的前面即可;如果你希望调用者使用函数时一定要使用某些参数,且必须是关键字传参时,那么就可以…...
PPT密码解密,简单教程,保护幻灯片内容
在创建、编辑和共享幻灯片时,有时会解除密码来保护幻灯片的安全。如果因为忘记密码而无法编辑或打开幻灯片,下面是一种安全、简单、实惠的办法来解决这个问题。 具体步骤如下:第一步百度搜索【密码帝官网】,第二步点击“立即开始”…...
Apache Airflow (十一) :HiveOperator及调度HQL
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…...
SpringBoot-Docker容器化部署发布
在生产环境都是怎么部署 Spring Boot? 打成 jar 直接一键运行打成 war 扔到 Tomcat 容器中运行容器化部署 一、准备Docker 在 CentOS7 上安装好 Docker 修改 Docker 配置,开启允许远程访问 Docker 的功能,开启方式很简单,修改 /usr/lib/s…...
重生奇迹mu格斗怎么加点
1.力量加点 力量是格斗家的主要属性之一,它可以增加你的攻击力和物理伤害。因此,对于格斗家来说,力量加点是非常重要的。建议在前期将大部分的加点放在力量上,这样可以让你更快地杀死怪物,提高升级速度。 2.敏捷加点…...
「浙江科聪新品发布」新品发布潜伏顶升式移动机器人专用控制器
聚焦专用车型 最小专用控制器 控制器只占整机5%,纵向出线方式,占比更小 更易插拔 整体解决方案 更具价格优势 提供整体解决方案,配套各类型产品设备及车体厂家 打造持久稳定使用 坚持工业级品质 采用车规级接口,不用其它类不可…...
大数据学习(22)-spark
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
String类常用方法总结
目录 一.简单认识String 二.String对象的比较 1.equals 内部实现原理: 2.compareTo 3.compareToIgnoreCase 三.字符串查找 示例: 四.字符串与其他类型转化 1.数值和字符串相互转换 2.大小写相互转化 3.字符串转数组 4.格式化转化 五.字符串…...
TensorFlow实战教程(二十八)-Keras实现BiLSTM微博情感分类和LDA主题挖掘分析
从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章通过Keras深度学习构建CNN模型识别阿拉伯手写文字图像,一篇非常经典的图像分类文字。这篇文章将结合文本挖掘介绍微博情感分类知识,包括数据预处理、机器学习和深度学习的情感分类,后续结…...
个人博客添加访问人数以及访问时间-githubpage
layout: post # 使用的布局(不需要改) title: 个人博客添加访问人数以及访问时间 # 标题 subtitle: 个人博客优化 #副标题 date: 2023-11-18 # 时间 author: BY ThreeStones1029 # 作者 header-img: img/about_bg.jpg #这篇文章标题背景图片 catalog: tr…...
Django--重定向redirect
在 Django 中,redirect 是一个用于进行重定向的函数。它允许你将用户从一个 URL 重定向到另一个 URL,通常用于处理表单提交、用户登录、用户注册等操作后的页面跳转。redirect 函数属于 django.shortcuts 模块。 以下是 redirect 函数的基本用法和一些参…...
在html和css中的引用svg(一)
问题:如何让 DIV 中的svg垂直居中? HTML 代码: <div class"content"><svg ...> ... </svg></div> CSS代码: .content svg { vertical-align: middle;} 实用扩展:如何让 DIV 中…...
C/C++ 实现:自然排序:针对两个需要排序的字符串,不仅逐个比较每个字符的顺序,对于连在一起的数字字符会作为一个完整数字进行比较 某知名企业的笔试题
目录 题目描述: 分析: 代码实现: 完整代码: 运行结果: 题目描述: 下面是一个自然排序函数的声明,请实现该函数; 自然排序是指:针对两个需要排序的字符串,不仅逐个比较每个...
sse实时通信
使用原因:用户网络环境较差,之前使用ws总是出现断连重连,导致数据总是不能实时更新,所以更换为sse npm install event-source-polyfill createWebSocket:创建sse连接 getWebSocketMsg:接收sse消息 impo…...
Qt专栏3—Qt项目创建Hello World
setp1 打开软件 双击Qt Creator 11.0.3 (Community),打进入软件界面 step2 创建项目 点击创建项目 step3 选择模板 选着Application(Qt)->Qt Widgets Application setp4 设置项目 名称中填入项目号名,创建路径中填入项目保存位…...
Vibe Coding 与 Agentic Engineering 的边界正在模糊:AI 驱动的开发新常态
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
为AI编码智能体引入操作系统级纪律:pm工具解决上下文丢失与工作流混乱
1. 项目概述:为AI编码智能体引入操作系统级纪律如果你和我一样,已经深度使用Claude Code这类AI编码助手超过半年,你一定会遇到一个核心痛点:上下文丢失。今天你让Claude重构了一个模块,选择了JSON存储方案,…...
devmem:为代码库构建本地化项目记忆的CLI工具
1. 项目概述:为你的代码库构建一个本地化的“项目记忆” 你有没有过这样的经历?接手一个新项目,或者时隔几个月再回到自己的老项目,面对一堆代码,脑子里一片空白:“我当时为什么要这么设计这个接口&#x…...
2026跨境建站平台对比 Taoify vs Shopify vs 店匠 中小卖家优选指南
核心关键词:Taoify vs Shopify vs 店匠,跨境建站平台对比,中小卖家跨境建站选择长尾关键词:Taoify和Shopify哪个好,店匠和Taoify对比,新手跨境建站工具推荐,低成本跨境建站平台摘要:…...
如何快速配置Lab Streaming Layer:科研数据同步与流式处理的完整指南
如何快速配置Lab Streaming Layer:科研数据同步与流式处理的完整指南 【免费下载链接】labstreaminglayer LabStreamingLayer super repository comprising submodules for LSL and associated apps. 项目地址: https://gitcode.com/gh_mirrors/la/labstreamingla…...
ARM处理器勘误文档解析与分类指南
1. ARM处理器勘误文档解析与分类指南在嵌入式系统开发领域,处理器勘误文档(Errata Notice)是硬件工程师和底层软件开发者的必备参考资料。这份2004年发布的ARM SY003文档虽然显示当前版本没有实际勘误项,但其结构体系为我们提供了…...
ChanlunX缠论插件终极指南:3步实现自动化技术分析,告别手动画线困扰
ChanlunX缠论插件终极指南:3步实现自动化技术分析,告别手动画线困扰 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为复杂的缠论分析而头疼吗?ChanlunX缠论插件是…...
FPGA开发避坑指南:手把手教你识别并消除Verilog代码中的Latch(附Vivado实例)
FPGA开发实战:彻底规避Verilog代码中的Latch陷阱 在FPGA开发的世界里,锁存器(Latch)就像潜伏在代码中的隐形炸弹,随时可能让你的设计功亏一篑。想象一下这样的场景:你花费数周精心设计的逻辑电路࿰…...
怎么部署OpenClaw?2026年云端9分钟零门槛保姆级指南及百炼Coding Plan流程
怎么部署OpenClaw?2026年云端9分钟零门槛保姆级指南及百炼Coding Plan流程。OpenClaw作为阿里云生态下新一代的开源AI自动化代理平台,曾用名Moltbot/Clawdbot,凭借“自然语言交互自动化任务执行大模型智能决策”的核心能力,正在重…...
基于Claude API的智能代码项目管理工具:claude-code-pm深度解析
1. 项目概述与核心价值最近在GitHub上看到一个名为falungongcleanness498/claude-code-pm的项目,这个标题乍一看有点神秘,但结合其描述和代码结构,我意识到这是一个围绕Claude API构建的、用于代码项目管理与分析的智能工具。作为一名长期与各…...
