SSM框架之_Mybatis入门笔记,详解快速上手(一)

SSM框架从入门到精通 SSM 框架是由 Spring、SpringMVC 和 MyBatis 三个优秀的开源框架整合而成,在 Java Web 开发中占据着重要地位。 阅读详情

简介

先附上官网文档
Mybatis官方文档:https://mybatis.org/mybatis-3/zh/index.html

什么是mybatis?

  • 简化JDBC操作,可以避免写jdbc的代码和手动的设置参数以及获取结果集的过程。
  • 使用注解或XML来配置和映射原生信息,将接口和java的实体类映射成数据库中的记录。
  • 持久层框架,实现数据持久化。
  • 半自动化框架,使用SQL更灵活;hibernate是全自动,使用起来不灵活。

持久化层


数据持久化

将程序中的数据在内存中的瞬时态转换成在磁盘中的持久态。例如:JDBC、文件IO。(IO消耗资源严重,因此产生了数据库)

为什么需要Mybatis

  • 简化jdbc操作,传统jdbc太复杂。可以简化的将数据存入数据库和从数据库中取数据。
  • 传统的jdbc操作 , 有很多重复代码块 .比如 : 数据取出时的封装 , 数据库的建立连接等等… , 通过框架可以减少重复代码,提高开发效率
  • MyBatis 是一个半自动化的ORM框架 (Object Relationship Mapping) -->对象关系映射

第一个Mybatis工程

步骤

工程目录结构

image-20201028111106759

1、搭建环境
  • mybatis是一个持久层框架,因此使用mybatis的前提是要有一个数据库。

  • 使用maven,注入依赖(引入相关jar包)

    创建一个普通的maven项目,删除src目录,让这个项目充当父工程,在父工程的pom.xml文件中引入依赖之后,在项目下创建子模块,子模块中自动继承父工程中引入的依赖。

    需要注入的依赖:mybatis、mysql-connector-java、junit4。

2、创建mybatis的配置文件:

在configuration标签中写配置,可以用不同的id写多套环境。

作用:配置数据库连接环境(连接数据库),加载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">
<!--mybatis的核心配置文件-->
<configuration>
<!--default:默认使用这个配置环境 -->
    <environments default="development">
<!--可以配置多套环境 -->
        <environment id="development">
<!--事务管理,默认是JDBC的事务管理-->
            <transactionManager type="JDBC"/>
<!-- 启用连接池 -->
            <dataSource type="POOLED">
<!-- 数据库连接驱动-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!--数据库连接url-->
<!--&amp;代表&符号,依次是:设置安全连接,设置unicode编码,设置编码方式,设置数据库时区-->
                <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>

<!--每一个mapper.xml需在配置文件中注册-->
    <mappers>
        <!-- 通过资源的方式注册 -->
        <!-- 这里写resource路径,用/不能用. -->
        <mapper resource="UserMapper.xml"></mapper>
    </mappers>
</configuration>
3、Mybatis工具类

获取SqlSessionFactory对象

Mybatis工具类的作用:加载mybatis的配置文件,通过方法返回一个SqlSession对象。

static中的三行代码是固定的。

package top.jarvaniv.utils;

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 java.io.IOException;
import java.io.InputStream;

// mybatis 的工具类,获取SqlSessionFactory对象
public class MyBatisUtils {
//提升作用域,把静态代码快中的变量作用域提升,否则,sqlSessionFactory只在静态代码块中有效。
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
//          加载mybatis的配置文件
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

//    获得了sqlSessionFactory,就可以获得SqlSession实例。
//    SqlSession包含了面向数据库执行SQL命令的所需的所有方法。
// 静态方法,返回一个SqlSession对象。
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }

}
改造工具类的getSession方法,自动提交事务

设置给的boolean类型参数,设置自动提交事务

  //获取SqlSession连接
  public static SqlSession getSession(){
      return getSession(true); //事务自动提交
  }
 
  public static SqlSession getSession(boolean flag){
      return sqlSessionFactory.openSession(flag);
  }
4、创建实体类

封装数据库的每条数据。与数据库中的每列字段值对应。

package top.jarvaniv.pojo;

// 用户实体类
public class User {
    private int id;
    private String name;
//省略set、get、构造方法等代码
}
5、创建DAO接口

其中定义了操作数据库的各种方法

package top.jarvaniv.dao;

import top.jarvaniv.pojo.User;

import java.util.List;

public interface UserDao {
    // 定义了查询数据库中用户列表的方法
    List<User> getUserList();
    //等待实现类重写
}
6、创建UserMapper.xml文件

由原来的接口实现类,转变为现在的xml配置文件。

创建之后,还要在mybatis配置文件中注册这个mapper。

命名空间必须写,根据命名空间确定接口。

<?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="top.jarvaniv.dao.UserDao">
<!--    查询语句 -->
<!--    设置查询语句的id,id是实现的接口中的方法名,和查询的结果类型-->
    <select id="查询id,通常使用实现接口中的实现的方法名" resultType="返回结果的类型,这里用User类接收"></select>
    <select id="getUserList" resultType="top.jarvaniv.pojo.User">
        <!-- 操作数据库的查询语句 -->
        select * from test.temp
  </select>
</mapper>
7、编写测试类
package top.jarvaniv.dao;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import top.jarvaniv.pojo.User;
import top.jarvaniv.utils.MyBatisUtils;

import java.util.List;

public class UserDaoTest {
    @Test
    public void getUserListTest(){
        //首先,通过mybatis工具类得到一个sqlSession对象
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        // 获取mapper
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        // 执行mapper的方法,得到结果集
        List<User> userList = userDao.getUserList();

        for (User user : userList) {
            System.out.println(user);
        }
		// 最后关闭SqlSession资源
        sqlSession.close();
    }
}

类的作用域生命周期


SqlSessionFactoryBuilder

一旦创建了 SqlSessionFactory,就不再需要它了。所以最好把它最佳的作用域是方法作用域(局部变量)。

把它放在工具类的静态代码块中。

SqlSessionFactory

可以理解为:数据库连接池

一旦被创建就在应用的运行期间一直存在。不应该在运行期间关闭或者创建新的。

简单来说就是使用单例模式,或静态单例模式。

SqlSession

连接到连接池的一个请求。

它的实例是线程不安全的,所以不能被共享。最佳的作用域是请求或方法作用域。

每次收到一个http请求,就会打开一个SqlSession,返回一个响应,就关闭它(用完赶紧关闭,防止资源占用)。必须确保SqlSession被关闭,所以在finally中设置它的关闭。标准的使用方式。

try(创建资源){
    
}catch(){
    
}finally{
    关闭资源
}

Mybatis的执行流程

在这里插入图片描述

快速上手Mybatis 快速上手Mybatis一、Mybatis快速入门1.添加Mybatis坐标2.创建数据表3.编写实体类4.编写映射文件5.编写核心文件6.编写测试类二、Mybatis增删改查1.增2.删3.改三、Mybatis核心配置文件概述四、Mybatis相应API五、Mybatis的Dao层实现1.传统模式2.接口代理模式六、Mybatis映射文件深入1.动态sql-if2.动态sql-foreach3.sql代码抽取七、Mybatis核心配置文件深入1.typeHandlers2.plugins标签八、Mybati 阅读详情

相关推荐

MyBatis 入门教程详解

MyBatis 入门教程详解

不迁怒,不贰过。小知识,大智慧。 2180

SSM篇基础入门

ssm学习经历

m0_52802317的博客 3642

SSM框架快速入门与实践模板

SSM框架是Java EE开发中的重要技术栈,它整合了Spring、Spring MVC和MyBatis三个框架,各自承担着不同的开发层面职责,为现代Web应用的构建提供了强大的支持。本章节将对SSM框架做一个全面的基础性介绍,为之后深入探讨各个框架的核心功能和高级特性打下坚实的基础。SSM框架是一种整合模式,它将Spring的轻量级控制反转(IoC)和面向切面编程(AOP)特性,Spring MVC的Web开发框架以及MyBatis的半自动ORM功能结合起来。

weixin_27645199的博客 978

SSM框架学习

接口:接口实现类:容器配置文件:执行输出:注解bean的作用:将方法的返回值对象设置为bean,当外部需要时,容器就将对象传递出去标红注解:向spring容器说明我们是用注解写的配置类在spring容器中,注解Controller将springmvc控制器类定义为bean(能够让容器创建对象);注解RequestMapping设置当前控制器方法请求访问路径;注解ResponseBody设置当前控制器方法响应内容为当前返回值,无需解析。

boke00_7的博客 1118

ssm框架快速入门课程

由于文件过大,另外附上百度网盘分享链接。java的ssm框架学习课程,有全套的Spring+SpringMVC+Mybatis,每个框架分为参考资料+教案+视频,共有一周的学习,每天学习20个视频,每个视频大约20分钟,学习下来能对ssm有较深的理解和应用。

一个案例带你快速入门SSM开发

IDEA Spring3.x+SpringMVC+Mybatis,没有用到maven管理工具。

带你快速入门SSM框架---零基础搭建---详解

快速入门搭建SSM框架,零基础必看。

小码农的博客 2748

遗传算法驱动吃豆人进化:从零构建AI游戏智能体

遗传算法是一种模拟自然选择过程的优化技术,其核心原理是通过选择、交叉和变异等操作,在解空间中迭代搜索最优解。该技术为解决复杂优化问题提供了强大工具,尤其在游戏AI、机器人控制和参数调优等场景中价值显著。在游戏AI领域,遗传算法常被用于训练智能体自主决策,例如在经典游戏《吃豆人》中,通过定义智能体的“基因”(如神经网络权重)和“适应度”(如游戏得分),可以引导其进化出躲避幽灵、高效吃豆等策略。本项目结合Pygame框架与神经网络,构建了一个完整的遗传算法训练沙盒,详细展示了如何通过适应度函数设计和参数调优,实

weixin_30467199的博客 273

【重温SSM框架系列】11 - Mybatis快速入门(JDBC、开发步骤,配置文件)

Mybatis快速入门 大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。 如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never let it rest, until good is better, and better best. 近期会重新温习一下SSM的相关知识,相应的博客会更新至专栏【SSM框架】中,欢迎大家关注! SSM专栏:https://blog.youkuaiyun.com/weixin_4359868

1+1=王的博客 4297

Ubuntu 22.04 LTS下Xenomai 3.3实时内核配置全攻略(附常见错误排查)

本文详细介绍了在Ubuntu 22.04 LTS系统上配置Xenomai 3.3实时内核的完整流程,包括环境准备、内核补丁应用、编译优化及常见错误排查。特别针对工业自动化和机器人控制场景,提供了性能优化建议和故障解决方案,帮助开发者实现毫秒级精度的实时任务处理。

weixin_29268385的博客 465

随机截距交叉滞后模型RI-CLPM:原理、Mplus实现与结果解读

纵向面板数据分析中,传统交叉滞后模型(CLPM)常被用于探索变量间的时序关系,但其估计结果可能混淆了个体间稳定差异与个体内短期波动,导致交叉滞后路径出现偏差。随机截距交叉滞后模型(RI-CLPM)通过引入随机截距因子,将个体特质层面的差异与个体内动态过程分离,从而提供更纯净的个体内效应估计。该模型在组织心理学、发展心理学、成瘾行为等研究领域迅速普及,并成为顶级期刊审稿时常见的稳健性检验要求。本文从原理出发,系统讲解RI-CLPM的模型构建、识别条件、Mplus实操代码、输出解读及常见陷阱,并结合协变量处理、

weixin_33525298的博客 283

SSM 框架快速入门详解

SSM 框架整合 SSM 是Spring、SpringMvc、mybatis整合在一起完成一个web项目的开发 pom.xml <dependencies> <!--Junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId>

Abright's blog 1693

ChatGPT设置密钥后Codex免手机验证:配置顺序与身份凭证复用机制

API Key 是一种用于身份识别的凭证,其核心原理是通过预配置的密钥替代交互式登录流程。在开发工具中,密钥认证优先级通常高于会话认证,当本地存在有效密钥时,工具会直接复用该凭证,从而减少重复验证环节。这种机制的技术价值在于提升开发效率与配置一致性,尤其适用于多设备切换、CI/CD 流水线及编程辅助工具等场景。以 Codex 为例,在 ChatGPT 界面提前配置 API 密钥后,Codex 启动时可读取持久化存储的密钥,避免触发手机号验证,实现身份凭证的跨入口复用。

weixin_33940469的博客 499

SSM框架之_Mybatis入门笔记,详解快速上手(八/完结):缓存篇

缓存 简介 存储在内存中的临时数据。 将用户经常查询的数据存入内存中,从而提高用户的查询速度,解决高并发系统的性能问题。 减少和数据库的交互次数,减少系统开销,提高系统效率。 适合使用缓存的数据:经常查询且长时间不修改的数据。 Mybatis缓存 默认定义的两个缓存:一级缓存和二级缓存 默认开启一级缓存,SqSession级别的缓存,称为本地缓存。 二级缓存需要手动开启,namespace级别的。 Mybatis提供了缓存接口Cache,可以通过实现Cache接口来自定义二级缓存。 一级缓存

Java_web12138667的博客 231

对数周期天线hfss建模_Ansoft HFSS 在设计对数周期天线时的仿真方法-HFSS教程

AnsoftHFSS在设计对数周期天线时的仿真方法文章来源: ANSYS 2011中国用户大会优秀论文 录入: mweda.com 点击数:【摘要】 本文通过 ANSOFT HFSS 设计了一个对数周期天线,在仿真分析时,发现随着求解频率的不同,天线的求解结果差别较大,求解误差较大。通过在 HFSS 中尝试不同的求解设置方法, 最终通过将天线模型剖分网格最大长度限定在 1/50λ的...

weixin_42186728的博客 2103

双目立体匹配算法:SGBM

SGBM(Semi-Global Block Matching)是一种用于计算双目视觉中视差(disparity)的半全局匹配算法,在OpenCV中的实现为semi-global block matching(SGBM)。它是基于全局匹配算法和局部匹配算法的优缺点,提出了一种折中的方法,既能保证视差图的质量,又能降低计算复杂度。

weixin_45303602的博客 9413

SSM框架之_Mybatis入门笔记,详解快速上手(二):增删改查篇

CRUD 增删改操作,执行完sql后,需要提交事务,否则不生效。 查询不需要提交事务。 通过SqlSession对象提交事务。 参数格式 sql语句中填写参数的格式:#{} 在sql语句中填写参数时,如果接口中的参数是类,那么可以直接写类中的属性,如果不是类,接口中的方法参数是什么,就写什么。 select id:对应namespace中的方法名 resulteType:sqlj返回值结果的数据类型 parameterType:sql参数类型 步骤: 在接口中定义方法。 在mapper.xml中定

Java_web12138667的博客 1229

腾讯Android开发面试准备指南及参考答案

腾讯元宝高级Android开发职位面试准备指南 该职位要求扎实的Kotlin基础、架构设计能力和性能优化经验,重点关注Android客户端开发。面试流程约3轮,支持线上面试,流程较快。候选人需准备以下核心内容: 基础技术:Kotlin特性、Android开发生命周期、多线程编程 架构设计:MVVM/MVI模式应用、组件化解耦方案 性能优化:流畅度提升、内存管理、启动时间优化等实战案例 加分技能:Jetpack Compose开发、音视频处理、跨平台开发经验 建议结合项目经验准备具体案例,突出技术深度和问题解

郑伟强dev的专栏 1195

SSM框架之_Mybatis入门笔记,详解快速上手(七):动态SQL篇,Mybatis的优势在这里

动态SQL 根据不同的条件,生成不同的SQL语句。 本质就是通过不同的关键字标签,对sql语句的拼接。 if 判断语句 <if test="判断条件"> 如果条件成立,执行的语句 </if> choose(when,otherwise) 类似java中的switch语句,选择其中一个语句执行。 when类似case,otherwise类似default。 <where> <choose> <when test="t

Java_web12138667的博客 298

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SSM框架之_Mybatis入门笔记,详解快速上手(四):日志与分页查询篇

日志 日志工厂 如果一个数据库操作出现了异常,就需要排错,日志就是排错最好的助手。 之前排错可以用的到工具:sout、debug 新的工具:日志工厂。 mybatis内置了多种日志功能,mybatis的配置文件中可以设置。 常用:LOG4J、STDOUT_LOGGING。 其他了解即可: JDK_LOGGING:jdk自带的 NO_LOGGING:不启用日志 STDOUT_LOGGING:标准日志输出 LOG4J 开源项目 可以控制日志信息输送的目的地:控制台,文本,GUI组件… 可以控制每一条日志

Java_web12138667的博客 269

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SSM框架之_Mybatis入门笔记,详解快速上手(六):一对多与多对一查询处理

多对一处理 多对一:通过关联处理 一对多:通过集合处理 按查询嵌套处理 思路:根据学生信息中的老师信息->获取老师信息。 类似于sql中的子查询。 mapper.xml文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapp

Java_web12138667的博客 271

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SSM框架之_Mybatis入门笔记,详解快速上手(五):注解开发与Lombok篇。简化开发就看这里,内含干货

注解开发 面向接口编程 真正开发过程中大部分使用注解,mybatis大部分使用配置文件。 使用注解开发是为了更符合面向接口编程的思想。 面向接口编程,目的:解耦合。 在面向对象的系统中,系统的功能是由各种不同的对象协作完成的。对象之间相互调用,而调用的对象内部是如何实现的,对系统设计人员就不是那么的重要。 而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。 接口的理

Java_web12138667的博客 222

SSM框架详解

SSM框架是指将Spring、SpringMVC和MyBatis三个技术框架结合起来使用的一种开发模式。它的目标是通过整合这三个框架的优势,实现高效、灵活、可扩展的Web应用程序开发。Spring:提供了IoC(Inverse of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)等功能,简化了企业级应用的开发流程。

m0_72410588的博客 3万+

三万字速通SSM框架入门知识点,快速上手CRUD

ssm框架有三个框架组合而成——spring、springMVC、MyBatis。 ...

扎哇太枣糕的笔记博客 2946
上一篇: pip升级所有库(包)
下一篇: SSM框架之_Mybatis入门笔记,详解快速上手(二):增删改查篇
折纸之泪
博客等级 码龄7年 25粉丝 72原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值