Mybatis学习周报总结

学习Mybatis的周报

在过去的一周里,我们在飞思学习和掌握Mybatis这一优秀的持久层框架。通过谭老师的两周课程,我也有很大的收获。以下是本周的学习总结和收获:

一:Mybatis概述:

MyBatis,全称为My Batis SQL Mapper,是一个优秀的持久层框架,它的设计思想是将SQL语句与Java方法进行映射,从而实现数据库操作的简化和灵活性。相比于传统的JDBC编程,使用MyBatis可以大幅度减少重复的样板代码,提高开发效率和代码可读性。该框架的核心思想是将数据库操作抽象为一个个Mapper接口,开发者只需定义接口,并在XML配置文件中编写对应的SQL语句,MyBatis会自动将二者进行关联。这种分离的设计使得SQL语句与Java代码分离,方便维护和修改。另外,MyBatis还提供了丰富的功能和特性,如动态SQL、参数映射、结果集映射、缓存机制等,可以满足各种复杂的数据库操作需求。同时,MyBatis与Spring等常用框架无缝集成,使得在企业级应用中的使用更加便捷。总的来说,MyBatis以其简洁的设计、灵活的配置和强大的功能成为Java持久层框架中的佼佼者,为开发者提供了一种优雅而高效的数据库操作解决方法。


二:怎么使用Mabatis?

1.添加依赖: 在pom.xml中加入MyBatis的依赖:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
</dependency>

2.编写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.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/userdb" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
</configuration>

3.编写Mapper映射文件(以User类为例):

<?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">
    <select id="findUserById" parameterType="int" resultType="org.csmf.mybatis.entity.User">
        select * from t_user where id = #{id}
    </select>
</mapper>

4.将Mapper加入到全局配置文件中:

<mappers>
    <mapper resource="UserMapper.xml"/>
</mappers>

5.在代码中使用:

首先通过SqlSessionFactoryBuilder创建SqlSessionFactory工厂类,然后通过SqlSessionFactoryopenSession方法获取SqlSession对象,最后通过SqlSession的方法执行Mapper中配置的SQL语句。

InputStream inputStream = null;
try {
    // 加载MyBatis的主配置文件
    inputStream = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
    e.printStackTrace();
}

// 通过MyBatis的主配置文件得到SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

// 通过SqlSessionFactory得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();

// 通过SqlSession操作数据库
// selectOne():
// 第一个参数是Statement的Id,即SQL映射文件中的<select>标签的Id
// 第二个参数是输入参数
User user = sqlSession.selectOne("findUserById", 2);

MyBatis是一个非常方便的持久层框架,它的确简化了与数据库的交互过程,让开发者能够更专注于SQL本身,而无需处理繁琐的JDBC代码。

在你提供的使用方法中,重点说明了MyBatis的配置和使用步骤,对于初学者来说十分有用。另外,我可以补充一些关于MyBatis的重点:

重点补充说明

  1. #{}${}的区别

    • #{}用于占位符,在SQL语句中可以安全地传递参数,MyBatis会将参数进行预编译,防止SQL注入攻击,因此推荐使用。
    • ${}用于字符串替换,在SQL语句中会直接替换为参数值,存在SQL注入的风险,因此仅在需要动态拼接SQL的场景下使用,并且需要注意防范SQL注入。
  2. selectOne()selectList()的区别

    • selectOne()用于查询单个结果,当查询结果超过一个时会抛出异常,适用于期望结果唯一的场景。
    • selectList()用于查询多个结果,没有结果限制,适用于返回多行数据的情况。
  3. 事务管理

    • MyBatis可以与Spring等框架整合,以便更好地管理事务。在配置中,你可以选择不同的事务管理器类型,如JDBC、MANAGED等,以满足项目的需求。
  4. 动态SQL

    • MyBatis提供了丰富的动态SQL功能,可以根据条件动态生成SQL语句,例如<if><choose><when><otherwise><foreach>等标签,帮助你构建灵活的SQL语句。
  5. 缓存机制

    • MyBatis支持一级缓存和二级缓存,默认情况下一级缓存是开启的,可以通过配置来启用或禁用。二级缓存是跨SqlSession的缓存,需要手动配置开启,并且需要注意缓存的更新策略以及缓存的失效时机,以避免数据不一致的问题。

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

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

相关文章

提示词优化的自动化探索:Automated Prompt Engineering

编者按&#xff1a; 作者在尝试教授母亲使用 LLM 完成工作任务时&#xff0c;意识到提示词的优化并不像想象中简单。提示词的自动优化对于经验并不丰富的提示词撰写者很有价值&#xff0c;他们没有足够的经验去调整和改进提供给模型的提示词&#xff0c;这引发了对自动化提示词…

C++—DAY2

定义一个矩形类Rec&#xff0c;包含私有属性length&#xff0c;width&#xff0c;有以下成员函数: void set length(int l);//设置长度 void set width(int w); //设置宽度 int get length(); //获取长度 int get_width(); //获取宽度 void show(); //输出…

可见水印去除算法简介

去水印技术简介 进入二十一世纪以来&#xff0c;随着互联网技术和电子技术的飞速发展和进步&#xff0c;电子设备比如智能手机、iPad、个人计算机和智能穿戴设备等的大规模普及使用&#xff0c;各种文字、图像、视频及音频等数据信息借助于互联网实现了人们之间远距离的信息传…

kernel32.dll文件丢失的原因以及相对应的解决办法分享

kernel32.dll丢失是电脑中一个重要的文件&#xff0c;其实想要修复kernel32.dll文件的方法比较简单&#xff0c;今天就和大家说说如何去修复kernel32.dll文件。导致kernel32.dll文件丢失的原因又是什么&#xff1f;一起开看看吧。 kernel32.dll的作用 kernel32.dll是一个重要的…

IntelliJ IDEA 如何启用 JDK 预览特性

IntelliJ IDEA 也可以启用 JDK 的预览特性。 针对项目&#xff0c;选择项目结构。 配置是在语言结构上。 单击语言结构上的 SDK 默认&#xff0c;往下拉&#xff0c;就可以看到针对新版本的选项。 同时还可以看到那些版本是支持新特性预览的&#xff0c;那些版本是不支持新特…

Oracle 19c OCM考试难度如何?

许多人对 Oracle 19c OCM 的考试规则并不熟悉&#xff0c;本文将详细介绍考证所需条件以及具体要求&#xff0c;以帮助大家更顺利地完成考试流程。 首先&#xff0c;考生需具备相匹配的同级别 OCP 证书&#xff0c;如已获得 10g/11g/12c 证书者&#xff0c;则须先完成 083 升级…

UE5 GAS开发P41-43 永久效果,去除永久效果,伤害区域,EnumClass,开始重叠与结束重叠事件

这一部分学习了怎么创建一个伤害性的地形(火焰地形,毒沼泽等都可以用这个方式创建) AuraEffectActor.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "GameplayEffect.h&q…

【navicat】oracle library is not loaded 问题复现和解决方案

问题原因&#xff1a;客户端oci版本安装错误&#xff0c;navicat需要64位的oci,但是使用32位的oci。 解决方案&#xff1a;官网下载64位oci进行配置。本次演示的解决多了splplus&#xff0c;其实不必要安装也能运行。 首先判断是否数据库已经打开 尝试使用splplus连接数据库 1…

GDPU 算法分析与设计 天码行空5

一、【实验目的】 &#xff08;1&#xff09;熟悉动态规划算法的基本思想. &#xff08;2&#xff09;理解动态规划算法中子问题的划分和递推方程设计的基本方法. &#xff08;3&#xff09;熟悉矩阵链乘法的基本思想并编程实现。 二、【实验内容】 输入:矩阵链Ai…j的输入为…

美国站群服务器的国际网络环境在全球的影响力?

美国站群服务器的国际网络环境在全球的影响力? 美国站群服务器如何通过其技术优势和网络基础设施&#xff0c;塑造国际网络环境并对全球产生影响力? 在当今数字化时代&#xff0c;美国站群服务器在国际网络环境中扮演着至关重要的角色。作为全球互联网发展的领导者之一&…

在Windows 11中NotePad3的安装和配置详细教程

&#x1f4dd; 在Windows 11中NotePad3的安装和配置详细教程 文章目录 &#x1f4dd; 在Windows 11中NotePad3的安装和配置详细教程摘要引言正文1. NotePad3简介 &#x1f4d8;2. 安装前的准备工作 &#x1f6e0;️ 我已经给大家准备了一份安装包&#xff0c;微信搜索公众号&am…

K8S 部署和访问 Kubernetes 仪表板(Dashboard)

文章目录 部署 Dashboard UI浏览器访问登陆系统 Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中&#xff0c;也可以对容器应用排错&#xff0c;还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览…

推荐一款国内超级好用的低代码平台+商业开源低代码MES

一、低代码平台是什么&#xff1f; 低代码平台是一种应用程序&#xff0c;它为编程提供图形用户界面&#xff0c;从而以极快的速度开发代码&#xff0c;减少传统编程工作。 这些工具有助于快速开发代码&#xff0c;最大限度地减少手工编码的工作量。这些平台不仅有助于编码&a…

网络通信安全

一、网络通信安全基础 TCP/IP协议简介 TCP/IP体系结构、以太网、Internet地址、端口 TCP/IP协议简介如下&#xff1a;&#xff08;from文心一言&#xff09; TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/网际协议&#xff0…

基础环境:wsl2安装Ubuntu22.04 + miniconda

服务器相关信息&#xff1a; Thinkpad p1 gen5 64G 2T 3080ti&#xff0c;自带的有nvidia-smi显卡驱动。使用wsl2安装Ubuntu22.04 miniconda目标&#xff1a;安装gpu版本的PyTorch2.1.2&#xff08;torch2.1.2/cu117 torchvision0.16.2/cu117&#xff09; 处理器 12th Gen I…

【Linux-进程状态】

文章目录 1.进程状态1.运行状态2.阻塞状态3.挂起 2.Linux系统中的进程状态1.前台进程和后台进程深度睡眠 2.停止状态3.僵尸状态和死亡状态&#xff08;孤儿进程&#xff09; 1.进程状态 想要理解进程状态&#xff0c;我们要先看看课本中的进程有哪些状态。 进程状态用大白话说…

云渲染一张图多少钱

使用云渲染渲染一张效果图的价格没法确定多少钱一张&#xff0c;云渲染一张图的价格会受到多个因素的影响&#xff0c;如云渲染平台的定价策略、所选的渲染配置、优惠政策以及你提交的场景任务等。因此&#xff0c;无法给出确切的单一价格。 不同的云渲染平台会有不同的定价模…

《苍穹外卖》Day11部分知识点记录(数据统计——图像报表)

一、Apache ECharts 介绍 Apache ECharts是一款基于javascript的数据可视化图标库&#xff0c;提供直观、生动、可交互、可个性化定制的数据可视化图表。 官网地址&#xff1a;https://echarts.apache.org/zh/index.html 效果展示 柱形图饼图折线图 入门案例 1. 在 echart…

API安全尽释领先力,美创再获权威市场指南推荐

数字化时代&#xff0c;单位组织愈加依赖API实现系统间的数据共享和交互&#xff0c;但同时&#xff0c;因API引发的网络攻击风险也在不断升级&#xff0c;成为数据泄露的高发之地。 统计显示&#xff0c;过去的一年&#xff0c;API攻击增长已超过287%。Gartner研报预测&#x…

链动3+1模式:引领运营革命的创新之路与优势解析

在数字化浪潮的席卷之下&#xff0c;企业为寻求持续发展&#xff0c;已将商业模式创新视为核心驱动力。其中&#xff0c;链动31模式以其独特的运营理念&#xff0c;成功引领了一场革命性的运营变革&#xff0c;使得众多企业和个人在激烈的市场竞争中崭露头角。接下来&#xff0…
最新文章