【浅学 MyBatis 】

news2025/2/1 11:59:58

MyBatis 笔记记录

  • 一、MyBatis基础
    • 1. MyBatis介绍及快速入门
    • 2. 相关API介绍
      • 2.1 Resources
      • 2.2 SqlSessionFactory&&SqlSessionFactoryBuilder
      • 2.3 SqlSession
    • 3. 映射配置文件
    • 4. 核心配置文件
      • 4.1 规范写法
      • 4.2 参数和返回类型_起别名
    • 5. 引入Log4j
  • 二、MyBatis进阶
    • 1. 接口代理
    • 2. 动态sql使用
      • 2.1 where&if
      • 2.2 foreach
      • 2.3 片段抽取 include&sql
    • 3. 分页使用
  • 三、MyBatis高级

一、MyBatis基础

1. MyBatis介绍及快速入门

在这里插入图片描述
引入依赖:
在这里插入图片描述
写sql:
在这里插入图片描述

<?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="StudentMapper">
    <select id="find" resultType="com.jou.domain.Student">
        select * from student
    </select>
</mapper>

核心配置文件:
在这里插入图片描述

<?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>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db1"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="StudentMapper.xml"></mapper>
    </mappers>
</configuration>

方法调用:
在这里插入图片描述
结果输出:
在这里插入图片描述

2. 相关API介绍

2.1 Resources

在这里插入图片描述

本质还是类加载器的调用
在这里插入图片描述

2.2 SqlSessionFactory&&SqlSessionFactoryBuilder

在这里插入图片描述

在这里插入图片描述

2.3 SqlSession

在这里插入图片描述

3. 映射配置文件

在这里插入图片描述
xml的使用


import com.jou.domain.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.InputStream;
import java.util.List;

public class StudentTest {

    @Test
    public  void findAll() throws Exception {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession sqlSession = sessionFactory.openSession();
        List<Student> students = sqlSession.selectList("StudentMapper.find");
        for (Student student : students) {
            System.out.println(student);
        }
    }
}

在这里插入图片描述

4. 核心配置文件

在这里插入图片描述

4.1 规范写法

在这里插入图片描述
在这里插入图片描述

4.2 参数和返回类型_起别名

核心配置中:
在这里插入图片描述
mapper中:
在这里插入图片描述
在这里插入图片描述

5. 引入Log4j

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输出:
在这里插入图片描述

二、MyBatis进阶

1. 接口代理

在这里插入图片描述

在这里插入图片描述
mapper实现类去除,直接再实现层调用mapper对象
在这里插入图片描述

2. 动态sql使用

在这里插入图片描述

2.1 where&if

使用1:
在这里插入图片描述

2.2 foreach

在这里插入图片描述

2.3 片段抽取 include&sql

在这里插入图片描述
在这里插入图片描述

3. 分页使用

三、MyBatis高级

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

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

相关文章

Mac环境Royal TSX 从入门使用代替X sheet

Royal TSX 是一款 macOS 下可用的远程连接软件&#xff0c;类似于 Windows 系统的 XShell 。免费版最多支持 10 个连接&#xff0c;对于个人开发而言&#xff0c;已经足够了 一、下载安装 Royal TS 官网&#xff1a;https://www.royalapps.com/ts/win/download 选择 Royal T…

Python Ploty学习: 最简单的Dash App

1 Ploty简介 示例来自官网A Minimal Dash App | Dash for Python Documentation | Plotly有改动 Ploty与matplotlib和seaborn相比&#xff0c;其核心优势在于可交互性&#xff0c;matplotlib和seaborn默认情况下不可交互&#xff0c;具备可交互性的图表在数据分析、展示方面更…

CLIP原理解读——大模型论文阅读笔记一

CLIP原理解读 一. 核心思想 通过自然语言处理来的一些监督信号&#xff0c;可以去训练一个迁移效果很好的视觉模型。 论文的作者团队收集了一个超级大的图像文本配对的数据集&#xff0c;有400 million个图片文本的配对&#xff0c; 模型最大用了ViT-large&#xff0c;提出了…

【JavaEE】使Cookie与Session失效-Servlet上传文件操作-优化表白墙

表白墙退出登录操作-表白墙注册上传头像登录显示头像功能 文章目录 【JavaEE】使Cookie与Session失效-表白墙退出登录操作-Servlet上传文件操作-表白墙注册上传头像登录显示头像功能1. Cookie与Session的删除1.1 表白墙页面增加登录出口1.2 点击链接退出登录1.3 测试 2. 上传文…

【Java线程池详解】—— 每天一点小知识

&#x1f4a7; J a v a 线程池 \color{#FF1493}{Java线程池} Java线程池&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 《数据结构与算法》专栏的文章图文并茂&#x1f…

2023-6-10-第一式工厂方法模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

安卓与串口通信-数据分包的处理

前言 本文是安卓串口通信的第 5 篇文章。本来这篇文章不在计划内&#xff0c;但是最近在项目中遇到了这个问题&#xff0c;正好借此机会写一篇文章&#xff0c;在加深自己理解的同时也让大伙对串口通信时接收数据可能会出现分包的情况有所了解。 其实关于串口通信会可能会出现…

编译tolua——3、以pbc为例子,添加第三方库

目录 1、编译工具和环境说明 2、基础编译tolua 3、以pbc为例子&#xff0c;添加第三方库 4、更新luaJit 大家好&#xff0c;我是阿赵。 之前分享过怎样正常编译基础版本的tolua。这次用添加pbc为例&#xff0c;看看怎样往tolua里面添加其他的第三方库。知道了方法之后&#xf…

【郭东白架构课 模块二:创造价值】31 |节点六: 如何组织阶段性的价值交付?

你好&#xff0c;我是郭东白。上节课我们讲了为什么要做阶段性的价值交付&#xff0c;以及进入阶段性价值交付环节的准备工作。有了这些学习基础&#xff0c;这节课我们就可以进行阶段性价值交付了。 在交付的过程中&#xff0c;主要有三部分工作&#xff1a;目标分解、定义交…

SLAM十四讲——ch4实践(李群李代数)

视觉SLAM14讲----ch4的操作及避坑 一、ch4的实践的准备工作二、各个实践操作1. Sophus的基本使用方法2. 例子&#xff1a;评估轨迹误差 三、遇到的问题 一、ch4的实践的准备工作 确保已经有Sophus库&#xff0c;Sophus库是一个较好的李代数库。 注意&#xff1a; 开始时slamb…

MySQL 数据库实用指南:测试数据准备、SQL语句规范与基本操作

前言 欢迎来到小K的MySQL专栏&#xff0c;本节将为大家准备MySQL测试数据、以及带来SQL语句规范、数据库的基本操作的详细讲解~✨文末送书&#xff0c;小K赠书活动第二期 目录 前言一、准备测试数据二、SQL语句规范三、数据库的基本操作四、总结&#xff1a;文末赠书 一、准备测…

Linux之进程间通信——system V(共享内存、消息队列、信号量等)

文章目录 前言一、共享内存1.共享内存的基本原理2.共享内存的创建3.共享内存的控制参数返回值共享内存的内核数据结构 4.共享内存的关联参数 5.共享内存的去关联6.查看IPC资源7.查看共享内存8.删除共享内存 二、实现进程间通信&#xff08;代码&#xff09;三、共享内存的特点四…

【Newman+Jenkins】实施接口自动化测试

一、是什么Newman Newman就是纽曼手机这个经典牌子&#xff0c;哈哈&#xff0c;开玩笑啦。。。别当真&#xff0c;简单地说Newman就是命令行版的Postman&#xff0c;查看官网地址。 Newman可以使用Postman导出的collection文件直接在命令行运行&#xff0c;把Postman界面化运…

软件测试—冒烟测试

1. 核心 冒烟测试就是完成一个新版本的开发后&#xff0c;对该版本最基本的功能进行测试&#xff0c;保证基本的功能和流程能走通。 如果不通过&#xff0c;则打回开发那边重新开发&#xff1b; 如果通过测试&#xff0c;才会进行下一步的测试(功能测试&#xff0c;集成测试…

【ThreadLocal为什么可能内存泄漏?】 —— 每天一点小知识

&#x1f4a7; T h r e a d L o c a l 为什么可能内存泄漏&#xff1f; \color{#FF1493}{ThreadLocal为什么可能内存泄漏&#xff1f;} ThreadLocal为什么可能内存泄漏&#xff1f;&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个…

渗透测试综合实验

文章目录 一、前期交互二、信息搜集三、威胁建模五、渗透攻击1.弱口令攻击2.SQL注入3.不安全文件上传 六、后渗透攻击利用1.蚁剑安装2.一句话木马利用 七、漏洞报告 一、前期交互 二、信息搜集 使用nmap收集端口、域名、后台信息 目标IP nmap -O -sV IP 三、威胁建模 寻…

基于javaweb jsp+servlet实验室设备管理系统的设计与实现

一.项目介绍 本系统分为 超级管理员、老师、学生三类角色 超级管理员&#xff1a;通知管理、维护用户信息、实验室管理&#xff08;负责维护实验室、预约实验室&#xff09;、设备管理&#xff08;维护技术参数、维护运行数据、维护电子文档&#xff09;、设备维修管理&am…

第5章 总体设计

第5章 总体设计 总体设计是决定”怎样做”。也就是概括的说&#xff0c;系统应该如何实现&#xff0c;因此总体设计也被称作概要设计。 5.1 设计过程 例题 5.2 设计原理 5.2.1 模块化 模块是由边界元素限定的相邻程序元素&#xff08;例如&#xff0c;数据说明&#xff0c;…

【Spring Boot】Spring Boot特点及重要策略,含安装步骤详细讲解

前言 Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff0c;Spring Boot致力于在蓬勃发展的快速应…

Matplotlib 绘制多图

Matplotlib 绘制多图 我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。 subplot() 方法在绘图时需要指定位置&#xff0c;subplots() 方法可以一次生成多个&#xff0c;在调用时只需要调用生成对象的 ax 即可。 subplot subplot(nrows, ncols, inde…