MyBatis 学习笔记(一)

MyBatis 封装 JDBC :连接、访问、操作数据库中的数据

MyBatis 是一个持久层框架。

MyBatis 提供的持久层框架包括 SQLMaps 和 Data Access Objects(DAO)

  • SQLMaps:数据库中的数据和 Java数据的一个映射关系
    • 封装 JDBC 的过程
  • Data Access Objects(DAO):数据访问对象,使用JDBC 访问数据库,操作数据库中的数据

MyBatis 特性:

  1. MyBatis 是一个持久层的框架
    1. 支持定制化SQL(SQL 需要我们自己手动写)
    2. 存储过程
    3. 高级映射
  2. MyBatis 封装了JDBC
    1. 不需要我们手动写 JDBC 代码、手动设置参数、获取结果集
  3. MyBatis 可以使用简单的 XML或注解用于配置和原始映射
    1. 将接口和Java的POJO(Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录
  4. MyBatis 是一个半自动的ORM(Object Relation Mapping,对象关系映射)框架(ORM 就是将 Java中的实体对象和关系型数据库中的数据创建映射关系)
    1. Object :Java 实体对象
    2. Relation:关系型数据库
    3. Mapping :映射
    4. SQL 关系自己写,自己配置
      1. Hibernate 是一个全自动的ORM 框架
      2. JDBC 是一个全手动的ORM

MyBatis 的下载:

GitHub - mybatis/mybatis-3: MyBatis SQL mapper framework for Java

后缀是 tar.gz 是Linux 系统下的压缩文件后缀

MyBatis  和其他持久层框架的对比

MyBatis 的核心配置文件:

  • 核心配置文件:主要用于配置连接数据库的环境以及 MyBatis 的全局配置信息
  • 核心配置文件存放的位置是:src/main/resources目录下
  • 习惯上命名为:mybatis-config.xml

创建Mapper接口

MyBatis中的mapper接口相当于以前的dao。

区别是:

  • mapper 仅仅是接口,不需要提供实现类。MyBatis里面有面向接口编程
  • dao,有接口和实现类(不知道对不对)

创建MyBatis 映射文件:

ORM(Object Relationship Mapping)对象关系映射

  • 对象:Java实体类对象
  • 关系:关系型数据库
  • 映射:二者之间的对应关系

 

1.先写 mapper 接口中的方法

2.然后写mapper.xml里面的配置文件

核心配置文件:(了解)

<?xml version="1.0" encoding="UTF-8" ?>
<!--配置文件中的约束-->
<!--DOCTYPE 后面的是根标签:configuration-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--    配置连接数据库的环境
        environments:配置多个连接数据库的环境
        属性:
            default:设置默认使用的环境的id
-->
    <environments default="development">
<!--
        environment:配置某个具体的环境
        属性:
            id:表示连接数据库的环境的唯一标识,不能重复 ,
-->
        <environment id="development">
<!--            当前事务管理器,事务管理器的类型是JDBC;JDBC:事务的开启、提交和回滚都需要手动处理
            transactionManager:事务管理器,用来设置事务管理方式的
            属性:
                type="JDBC/MANAGED"
                    JDBC:表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式,事务的提交或回滚需要手动处理
                    MANAGED:被管理,例如被Spring管理
-->
            <transactionManager type="JDBC"/>
<!--            数据源,连接数据库的信息。type=pooled,表示使用数据库连接池
            dataSource:配置数据源
            属性:
                type:设置数据源的类型
                type="POOLED/UNPOOLED/JNDI"
                    POOLED:表示使用数据库连接池缓存数据库连接
                    UNPOOLED:表示不使用数据库连接池
                    JNDI:表示使用上下文中的数据源
-->
            <dataSource type="POOLED">
                <!--设置连接数据库的驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--设置连接数据库的连接地址-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <!--设置连接数据库的用户名-->
                <property name="username" value="root"/>
                <!--设置连接数据库的密码-->
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
<!--    引入映射文件-->
<!--    mapper 接口相当于DAO

    DAO 的取名,和我们操作的表和实体类有关。比如实体类是User,表名是t_user,DAO接口名就是 UserDao
-->
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>
</configuration>

把连接数据库的信息放在properties文件中

五、MyBatis 获取参数值的两种方式(重点⭐)

设置配置文件的模板:

创建核心配置文件的模板

创建映射文件的模板 

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

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

相关文章

最新ChatGpt Desktop for Mac 安装使用教程

1. 下载地址 请点击链接下载 ChatGPT Desktop for MacOS 2. 使用要求 MacOS 版本 14需要时M1芯片的&#xff0c;如果你是因特尔的暂时还还不行 就算下载了也会出现下面的异常 3. 获取权限资格 目前 ChatGPT MacOS Desktop还不是全量开放的, 如果你没有收到通知说明你还没…

链接物化视图在 ClickHouse 中的应用

本文字数&#xff1a;7728&#xff1b;估计阅读时间&#xff1a;20 分钟 作者&#xff1a;Mark Needham 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 在 ClickHouse 中&#xff0c;物化视图【https://clickhouse.com/docs/en/guide…

E1载波:一种2.048Mbps速率的PCM载波

E1载波的基本帧由32个子信道组成 帧长为256个bit,分为32个相等时隙&#xff0c;一个时隙为8个bit。256/328 时隙的编号为CH0~CH31 全帧包含256位,且每一帧用 125us时间传送 E1载波支持的数据传输效率为2.048Mbps&#xff0c;用PCM编码&#xff08;即 256bit/125us2.048Mbps…

现代密码学——消息认证和哈希函数

1.概述 1.加密-->被动攻击&#xff08;获取消息内容、业务流分析&#xff09; 消息认证和数字签名-->主动攻击&#xff08;假冒、重放、篡改、业务拒绝&#xff09; 2.消息认证作用&#xff1a; 验证消息源的真实性&#xff0c; 消息的完整性&#xff08;未被篡改…

基于Docker的ElasticSearch、Kibana服务搭建并开启用户鉴权

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;云原生与服务部署专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1. 前言 2. 服务搭建 2.1. 部署ElasticSearch 2.2. 部署Kibana 3. …

Spring中RestTemplate用法

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 RestTemplate 是从…

十进制异步计数器

十进制异步计数器 十进制异步加法计数器 【例1】设计一个十进制异步加法计数器&#xff0c;要求电路按 8421 BCD 码进行加法计数 Step1&#xff1a;建立原始状态转换图 根据状态转换图画出对应的时序图&#xff0c;然后从翻转要求出发&#xff0c;为每个触发器选择合适的时钟…

清理安卓手机广告

保存脚本另存为 Fuck_AD.sh&#xff0c;在手机执行后体验效果。 echo ""echo " " echo " - 开始执行清理广告库文件" sleep 3files(/data/app/*/*/lib/arm64/libpangleflipped.so/data/app/*/*/lib/arm64/libzeus_direct_dex.so/data/app/*/*/l…

Python+Flask+Pandas怎样实现任意时间范围的对比数据报表

话不多说,有图有源码: 1.上图 2.因为是低代码的,只能发重要有用的代码片段了 实现思路:1)获取指定时间范围内的数据:2)df合并 #----------年份替换----------------for syear in range(int(byear),int(eyear)1):start_datestr(syear)strbdate[4:]end_datestr(syear)stredate…

[Spring Cloud] (9)XSS拦截器

文章目录 简述本文涉及代码已开源Fir Cloud 完整项目防XSS攻击必要性&#xff1a;作用&#xff1a; 整体效果后端增加拦截器开关配置pom中增加jsoup依赖添加JSON处理工具类添加xss拦截工具类防XSS-请求拦截器 前端 简述 本文涉及代码已开源 本文网关gateway&#xff0c;微服务…

python-找出四位数中的玫瑰花数

【问题描述】玫瑰花数指一个n位数&#xff08;n>4),其每位上的数字的n次幂之和等于本身。 请求出所有四位数中的玫瑰花数 【输入形式】 【输出形式】 【样例输入】 【样例输出】1634 8208 9474 【样例说明】 【评分标准】 完整代码如下&#xff1a; for n in ra…

小程序-修改用户头像

1、调用拍照 / 选择图片 // 修改头像 const onAvatarChange () > { // 调用拍照 / 选择图片 uni.chooseMedia({ // 文件个数 count: 1, // 文件类型 mediaType: [image], success: (res) > { console.log(res) // 本地临时文件路径 (本地路径) const { tempFilePath } …

【大数据】MapReduce JAVA API编程实践及适用场景介绍

目录 1.前言 2.mapreduce编程示例 3.MapReduce适用场景 1.前言 本文是作者大数据系列专栏的其中一篇&#xff0c;前文我们依次聊了大数据的概论、分布式文件系统、分布式数据库、以及计算引擎mapreduce核心概念以及工作原理。 书接上文&#xff0c;本文将会继续聊一下mapr…

【zotero6】ZotCard笔记模板分享

zotcard插件下载链接&#xff1a;传送门 因为zotero出了新的zotero7&#xff0c;现在下载插件会出现zotero6和zotero7不兼容的情况&#xff0c;通过这个链接可以区分适配不同版本的插件。 下载后点击工具的附加组件 然后选择通过文件添加 就可以添加插件了 再通过 工具->…

【全开源】二手车置换平台系统小程序(FastAdmin+ThinkPHP+Uniapp)

二手车置换平台系统 特色功能&#xff1a; 车辆评估&#xff1a;系统提供车辆状况、性能和价值的评估功能&#xff0c;通过拍照、上传图片等方式自动识别车辆信息并给出估价建议&#xff0c;帮助买家和卖家更准确地了解车辆价值。 在线交易&#xff1a;平台提供在线购车、售车…

SpringBoot实现邮箱验证码

自行创建一个SpringBoot项目 导入SpringBoot所需要的邮箱验证码的包 <!--邮件发送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.1</version>…

MCS-51伪指令

上篇我们讲了汇编指令格式&#xff0c;寻址方式和指令系统分类&#xff0c;这篇我们讲一下单片机伪指令。 伪指令是汇编程序中用于指示汇编程序如何对源程序进行汇编的指令。伪指令不同于指令&#xff0c;在汇编时并不翻译成机器代码&#xff0c;只是会汇编过程进行相应的控制…

java继承使用细节二

构造器 主类是无参构造器时会默认调用 public graduate() {// TODO Auto-generated constructor stub也就是说我这里要用构造器会直接调用父类。它是默认看不到的 &#xff0c;System.out.println("graduate");} 但当主类是有参构造器如 public father_(int s,doubl…

考研计组chap1计算机系统概述

目录 一、计算机发展历程(不考了) 二、计算机硬件的基本组成 3 1.五个部分 &#xff08;1&#xff09;输入设备 &#xff08;2&#xff09;控制器 &#xff08;3&#xff09;运算器 &#xff08;4&#xff09;&#xff08;主&#xff09;存储器 &#xff08;5&#xff0…

Python高效数据分析的综合复习指南【时间处理与机器学习】

五、时间处理 一、时间戳-----Timestamp类型 方法1&#xff1a;使用Timestamp创建 pandas.Timestamp(ts_input, freqNone, tzNone, unitNone, yearNone, monthNone, dayNone, hourNone, minuteNone, secondNone, microsecondNone, tzinfoNone, offsetNone) import pandas a…