当前位置: 首页 > news >正文

【MyBatis】篇一.

文章目录

  • 1、MyBatis概述
  • 2、环境搭建

1、MyBatis概述

认识:

JavaEE开发的一个套件SSM,即:
在这里插入图片描述
MyBatis是一个持久层的框架,是对JDBC的一个封装,是一个半自动的ORM框架。
在这里插入图片描述
ORM即实体类对象和数据库中的数据的一个映射关系,当操作数据库中的数据的时候,就像是操作实体类对象一样。

下载:

//MyBatis下载
https://github.com/mybatis/mybatis-3

在这里插入图片描述
在这里插入图片描述
当然jar包开发中都是通过Maven来添加的。

和其他持久层技术的对比:

JDBC:
  • SQL夹杂在Java代码中,耦合度高,导致硬编码内伤
  • 维护不易,实际开发中SQL变化有变化,需要频繁修改
  • 代码冗长,开发效率低
HibernateJPA
  • 操作简单,开发效率高,Hibernate是全自动的持久层框架
  • 除去增删改查,对于复杂的SQL,就需要绕过框架去实现
  • 内部自动生成SQL,不容易做特殊优化
  • 反射操作太多,导致数据库性能下降
MyBatis
  • 轻量级,性能出色
  • SQL和Java编码分开,功能边界清晰。java代码专注业务,SQL语句专注数据
  • 开发效率虽稍逊与Hibernate,但能接受

2、环境搭建

  • 在IDEA中创建Maven工程,pom.xml中导入MyBatis的依赖:
<dependencies><!--MyBatis核心--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!--junit测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--MySql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.3</version></dependency>
</dependencies>
  • 创建mybatis的核心配置文件,src/mian/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><properties resource="jdbc.properties"></properties><settings><setting name="logImpl" value="STDOUT_LOGGING"/></settings><!--配置连接数据库的环境--><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><!--引入映射文件--><mappers><mapper resource="mappers/UserMapper.xml"/></mappers>
</configuration>
  • 创建mapper接口,MyBatis中的mapper接口相当于以前的dao,区别是mapper仅仅是接口,不需要提供实现类。

数据库表设计如下:
在这里插入图片描述
根据各字段定义User类的属性,并提供set和get方法,有参、无参构造:
在这里插入图片描述
创建mapper接口:调用接口来执行对应的SQL

package com.llg.mybatis.mapperpublic interface UserMapper{/***添加用户信息*/int insertUser();
}
  • 创建MyBatis映射文件:
ORMObject Relationship Mapping,关系对象映射- 对象即Java实体类对象
- 关系即关系型数据库
- 映射即二者的对应关系
Java概念数据库概念
属性字段/列
对象记录/行

在resources下新建目录mappers,新建UserMapper.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.llg.mybatis.mapper.UserMapper"><insert id="insertUser">insert into t_user values(null,'admin','admin123',23,'男','admin@qq.com')</insert>
</mapper>

=========
MyBatis面向接口编程的两个一致:
☀ 映射文件UserMapper.xml文件中的namespace要和Mapper接口的全类名保持一致。由此可以根据mapper接口中的全类名匹配到映射文件。
☀ 映射文件中SQL语句的id要和mapper接口中的方法名一致,这样调用mapper接口中的方法,即可以匹配映射文件中的一个SQL语句

保证了以上两点,调用接口中的方法,就可以根据接口名找到映射文件,再根据方法名找到当前所对应的SQL

表–实体类–mapper接口–映射文件

===
最后记得在核心配置文件中引入映射文件,由于我把映射文件放在resource下,所以这里用目录,而不是.包1.包2的形式
在这里插入图片描述

相关文章:

【MyBatis】篇一.

文章目录1、MyBatis概述2、环境搭建1、MyBatis概述 认识&#xff1a; JavaEE开发的一个套件SSM&#xff0c;即&#xff1a; MyBatis是一个持久层的框架&#xff0c;是对JDBC的一个封装&#xff0c;是一个半自动的ORM框架。 ORM即实体类对象和数据库中的数据的一个映射关系&am…...

【JavaScript速成之路】JavaScript流程控制

&#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f525;系列专栏&#xff1a;【JavaScript速成之路】 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文章目录前言1&#xff0c;流程控制2&#xff0c;分支结构2.1&#xff0c;if语句2.2&…...

18、基准测试,sysbench

基准测试,sysbench 1. sysbench1.1 用途1.2 安装1.3 版本1.4 查看帮助1.5 测试过程阶段2 CPU 性能测试2.1 测试原理2.2 查看帮助2.3 测试3. 内存性能测试3.1 查看帮助信息3.2 测试过程4.磁盘性能基准测试4.1 查看帮助4.2 生成文件(prepare)4.3 测试文件io(run)4.4 结果分析4.5…...

3D,点云拼接2

文章目录 点云配准方法自动配准技术PCL实现的配准算法两两配准1.关键点提取2.特征描述符3. 对应关系估计4. 对应关系去除5. 变换矩阵估算在上篇文章中对于拼接的概念、拼接精度的评价做了详细的介绍。本文是对拼接(配准)的进一步介绍,涉及更多原理层面的东西。 主要围绕以下三…...

jmeter学习笔记一(http基础知识)

HTTP请求&#xff1a;客户端同通过发送http请求向服务器请求资源的访问。http请求由三部分组成&#xff1a;请求行、请求头、请求正文 ​ 请求行包括&#xff1a;请求方法 URI 协议/版本 ​ 请求头&#xff1a;Content-type、Cookie、Authorization、User-Agent、Accept、Acc…...

【Java】CompletableFuture 并发顺序调度

前言 Java CompletableFuture 提供了一种异步编程的方式&#xff0c;可以在一个线程中执行长时间的任务&#xff0c;而不会堵塞主线程。 和Future相比&#xff0c;CompletableFuture不仅实现了Future接口&#xff0c;也实现了 CompletionStage接口。Future接口不用多说&#…...

职场人必备的6款实用办公app,每一款都是心头爱

打工人不容易啊&#xff0c;不提高工作效率怕是要被淘汰了。今天给大家分享6款职场人必备的实用办公APP&#xff0c;免费效率神器让工作事半功倍。这些APP每一款都是我的心头爱&#xff0c;肯定会让人大开眼界的&#xff0c;超级实用&#xff0c;直接往下看吧。1、向日葵远程控…...

小丑改造计划之复习一

1.函数重载 根据参数个数 参数顺序 参数类型 的不同 可以在同一个域存在多个同名函数 但是不可以根据返回值 缺省参数的不同去重载函数 2.指针和引用的区别 第一点 指针是内存地址&#xff0c;会开辟内存空间&#xff0c;而引用和它所引用的变量共享同一块内存 第二点 引用必须…...

final修饰符使用中遇到的一些问题

文章目录final修饰符1. final不能用来修饰构造方法2. final修饰变量的一些注意问题2.1 final修饰成员变量2.2 final修饰引用类型2.2.1 演示代码中lombok链式编程介绍final修饰符 final具有“不可改变”的含义&#xff0c;它可以修饰非抽象类、非抽象成员方法和变量。 用final…...

好记又实用的获取电脑型号方法

个人常用的方法 方法二最好记又好用。 方法一 dxdiag命令 按下键盘WINR调出运行在输入框输入dxdiag命令后&#xff0c;按下回车&#xff1b;进入DirectX诊断工具&#xff0c;便可查看系统型号等信息。 这里就会显示系统型号。 方法二 设备和打印机 控制面板-查看方式-小图…...

@Transactional配置详解

一&#xff1a;事务注解Transactional&#xff0c;属性propagation的7个配置 PROPAGATION_REQUIRED -- 支持当前事务&#xff0c;如果当前没有事务&#xff0c;就新建一个事务。&#xff0c;默认配置&#xff0c;也是常用的选择。 PROPAGATION_SUPPORTS -- 支持当前事务&#…...

性能测试面试题汇总

稳定性测试的怎么挑选的接口&#xff1f; 1、频繁使用的接口&#xff1a;选择那些被频繁使用的接口&#xff0c;因为这些接口可能会面临更大的负载和并发访问&#xff0c;从而可能导致性能问题。 2、核心功能接口&#xff1a;选择那些实现系统核心功能的接口&#xff0c;因为这…...

vue权限控制和动态路由

思路 登录&#xff1a;当用户填写完账号和密码后向服务端验证是否正确&#xff0c;验证通过之后&#xff0c;服务端会返回一个token&#xff0c;拿到token之后&#xff08;我会将这个token存贮到localStore中&#xff0c;保证刷新页面后能记住用户登录状态&#xff09;&#xf…...

利用正则表达式删掉代码中的所有注释-pycharm为例

首先删除注释 打开您想要删除注释的Python文件。 使用快捷键 Ctrl Shift R 打开 "Replace in Files"&#xff08;在文件中替换&#xff09;对话框。 在 "Find"&#xff08;查找&#xff09;框中输入以下正则表达式&#xff0c;以查找所有行中的注释内容…...

【java基础】内部类、局部内部类、匿名内部类、静态内部类

内部类 内部类就是定义在另一个类中的类。我们使用内部类的原因主要有以下两点 内部类可以对同一个包中的其他类隐藏内部类方法可以访问定义这个类的作用域中的数据&#xff0c;包括原本私有的数据 public class A {class B {} }我们使用内部类可以访问外部类的所有属性&…...

react renderProps学习记录

react renderProps学习记录1.引入2.改一下呢3.再改一下呢4.总结一下如何向组件内部动态传入带内容的结构(标签)?children propsrender props1.引入 上代码&#xff1a; import React, { Component } from react import ./index.css export default class Parent extends Com…...

关于tf.gather函数batch_dims参数用法的理解

关于tf.gather函数batch_dims参数用法的理解0 前言1. 不考虑batch_dims2. 批处理(考虑batch_dims)2.1 batch_dims12.2 batch_dims02.3 batch_dims>22.4 batch_dims再降为12.5 再将axis降为12.6 batch_dims<02.7 batch_dims总结3. 补充4. 参数和返回值5. 其他相关论述6. 附…...

日常操作linux常用命令

cd /mnt/opt/cqstt/logs/stt-erp docker logs -f --tail1000 stt-erp # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看逻辑CPU的…...

【Java集合框架】篇二:Collection接口方法

JDK不提供此接口的任何直接实现类&#xff0c;而是提供更具体的子接口&#xff08;如&#xff1a;Set和List&#xff09;去实现。 Collection 接口是 List和Set接口的父接口&#xff0c;该接口里定义的方法既可用于操作 Set 集合&#xff0c;也可用于操作 List 集合。方法如下…...

PHP入门指南:简单易学的语法和丰富的调试工具与安全性最佳实践

PHP是一种非常流行的服务器端编程语言&#xff0c;它被广泛地应用于Web开发中。如果您想学习Web开发&#xff0c;那么PHP是一个非常好的选择。在本文中&#xff0c;我将介绍PHP的一些基础知识&#xff0c;包括语法、变量、函数、数组、数据库连接、调试和安全性等。PHP的语法PH…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...