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

【mybatis】 01- mybatis快速入门

  1. 数据库创建(注意:最好先创建好数据库设置utf8再进行表创建)
create database mybatis;
use mybatis;drop table if exists tb_user;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varchar(30)
);INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');
  • 如图
    在这里插入图片描述
  1. 创建maven项目(省略)
  2. 导入坐标(mybatis,mysql驱动等)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>mybatis-demo</artifactId><version>1.0-SNAPSHOT</version><dependencies>
<!--        mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency>
<!--            mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency>
<!--        单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!-- 添加slf4j日志api --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.20</version></dependency><!-- 添加logback-classic依赖 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!-- 添加logback-core依赖 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.3</version></dependency></dependencies></project>
  • 注意:导入logback日志文件需要在资源文件夹中导入logback.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--CONSOLE :表示当前的日志信息是可以输出到控制台的。--><appender name="Console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern></encoder></appender><logger name="com.itheima" level="DEBUG" additivity="false"><appender-ref ref="Console"/></logger><!--level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 默认debug<root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。--><root level="DEBUG"><appender-ref ref="Console"/></root>
</configuration>
  1. 编写mybatis核心配置文件(mybatis-config)
<?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><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--数据库连接信息--><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><!--指定当前sql映射文件的路径,后面定义好mapper文件在加载进来--><mapper resource="xxxxxxxxxxx"></mapper></mappers></configuration>
  1. mapper.xml映射文件(一般又规范名称)如用户为UserMapper.xml
    此处负责sql语句的编写
  • 先创建一个实体pojo类(注意自行编写settergetter,toString方法)
    • 注意:与数据库中字段名称应一一对应
package com.ljh.pojo;public class User {private Integer id;private String username ;private String password ;private String gender ;private String addr;}
  • 创建UserMapper.xml
    • id是sql语句的唯一辨识
    • resultType将查询的数据绑定在哪个实体类中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:名称空间,暂时test后面讲
--><mapper namespace="test"><select id="selectAll" resultType="com.ljh.pojo.User">select *from tb_user;</select>
</mapper>
  • 在mybatis配置文件加载刚刚定义好的mapper文件(因为同在资源文件夹下,直接用相对路径解决)
<mappers><!--指定当前sql映射文件的路径--><mapper resource="UserMapper.xml"></mapper></mappers>
  1. 运行类
package com.ljh.pojo;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;
import java.util.List;public class MybatisDemo {public static void main(String[] args) throws IOException {//1.加载mybatis核心配置文件(官网有)String resource = "mybatis-config";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2. 获取对应的session对象,用它执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.执行sql//查询一个sql的方法,返回一个集合,注意给定sql的id前要给定命名空间,防止将来名称空间太多串线List<User> users = sqlSession.selectList("test.selectAll");//自动封装//打印System.out.println(users);//4.释放资源sqlSession.close();}
}
  1. 运行结果
    在这里插入图片描述

相关文章:

【mybatis】 01- mybatis快速入门

数据库创建(注意&#xff1a;最好先创建好数据库设置utf8再进行表创建) create database mybatis; use mybatis;drop table if exists tb_user;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varch…...

【C语言每日一题】杨氏矩阵(源码以及改进源码)

【C语言每日一题】—— 杨氏矩阵&#x1f60e;&#x1f60e;&#x1f60e; 目录 &#x1f4a1;前言&#x1f31e;&#xff1a; &#x1f49b;杨氏矩阵题目&#x1f49b; &#x1f4aa; 解题思路的分享&#x1f4aa; &#x1f60a;题目源码的分享&#x1f60a; &#x1f4…...

JavaScript 面向对象【快速掌握知识点】

目录 类和对象 属性和方法 继承 多态 封装 类和对象 类是用于定义对象的模板或蓝图&#xff1b;它包含对象的属性和方法&#xff0c;我们可以使用class关键字来定义类。 class Person {constructor(name, age) {this.name name;this.age age;}sayHello() {console.log(H…...

Qt——自定义Model

众所周知&#xff0c;Qt提供了一套Model/View框架供开发者使用&#xff0c;Model用来提供数据&#xff0c; View则用来提供视觉层的显示。实际上这是一套遵循MVC设计模式的GUI框架&#xff0c;因为Qt还提供了默认的Delegate作为Controller来作为控制器。 MVC的好处这里就不多说…...

用 .NET 启动你的 DJI Ryze Tello 无人机

大疆的 DJI Ryze Tello 是入门级的无人机&#xff0c;不仅在 STEM 教育中有非常广泛的应用&#xff0c;也可以作为编程入门的首选。通过 UDP 协议调用 DJI Ryze Tello SDK 可以让 DJI Ryze Tello 无人机执行起飞&#xff0c;降落&#xff0c;转向以及不同的花式动作。本文将会通…...

sed 功能详解

介绍sedsed是一种流编辑器&#xff0c;它一次处理一行内容&#xff0c;把当前处理的行存储在临时缓冲区中&#xff08;buffer&#xff09;,称为"模式空间"&#xff0c;接着sed命令处理缓冲区中的内容&#xff0c;处理完成后&#xff0c;把缓冲区的内容送往屏幕&#…...

整数二分思路详解

题目描述 给定一个按照升序排列的长度为n的整数数组&#xff0c;以及 q 个查询。 对于每个查询&#xff0c;返回一个元素k的起始位置和终止位置&#xff08;位置从0开始计数&#xff09;。 如果数组中不存在该元素&#xff0c;则返回“-1 -1”。 输入格式 第一行包含整数n和q&a…...

基于java的进销库存管理系统(Vue+Springboot+Mysql)前后端分离项目,附万字课设论文

1.3 系统实现的功能 本次设计任务是要设计一个超市进销存系统&#xff0c;通过这个系统能够满足超市进销存系统的管理及员工的超市进销存管理功能。系统的主要功能包括&#xff1a;首页、个人中心、员工管理、客户管理、供应商管理、承运商管理、仓库信息管理、商品类别管理、 …...

手动添加 Grub 启动项

1. 问题背景 自己的台式机上装了好几块硬盘&#xff0c;因为自己又菜又喜欢折腾&#xff0c;几乎每块上都有一个操作系统&#xff0c;其中两个 m.2 的硬盘上分别装着一个 windows11 和一个 Ubuntu20.04。但在另外一块机械硬盘中还装着更早的一个 Ubuntu18.04&#xff0c;我电脑…...

工人搬砖-课后程序(JAVA基础案例教程-黑马程序员编著-第八章-课后作业)

【案例8-4】 工人搬砖 【案例介绍】 1.任务描述 在某个工地&#xff0c;需要把100块砖搬运到二楼&#xff0c;现在有工人张三和李四&#xff0c;张三每次搬运3块砖&#xff0c;每趟需要10分钟&#xff0c;李四每次搬运5块砖&#xff0c;每趟需要12分钟。本案例要求编写程序分…...

深度学习中backbone、head、neck等概念

1.backbone 翻译为主干网络的意思&#xff0c;既然说是主干网络&#xff0c;就代表其是网络的一部分。这个主干网络大多时候指的是提取特征的网络&#xff0c;其作用就是提取图片中的信息&#xff0c;供后面的网络使用。这些网络经常使用的是ResNet VGG等&#xff0c;而不是我…...

华为OD机试用Python实现 -【Linux 发行版的数量】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲Linux 发行版的数量题目描述输入描述输出描述说明示例一输入输出说明Python 代码实现代码编写逻辑华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.csd…...

Http报文解析

http通信流程浏览器->已监听的web服务器->read->write->close http请求报文: a.请求方法: POST GET DELETE HEAD OPTIONS PUT TRACE b.请求地址: /xxx/yyy/zzz c.报文协议: HTTP/1.1 d.请求报文头: Accept Referer Accept-Language Content-Type Host Content-Len…...

Vue下载安装步骤的详细教程(亲测有效) 2 安装与创建默认项目

上篇请移步到Vue下载安装步骤的详细教程(亲测有效) 1_水w的博客-CSDN博客 上一篇博文已经对Node.js的安装与配置进行了详细介绍。 另外&#xff1a;文中项目存放的路径及项目名称可根据自身实际情况进行更改。 目录 三、Vue安装配置 1、搭建Vue脚手架 2、通过NPM安装Vue …...

TIA博途Wincc中自定义配方画面的具体方法示例

TIA博途Wincc中自定义配方画面的具体方法示例 前面和大家分享了通过TIA博途自带的配方视图组态配方功能的具体方法,具体内容可参考以下链接中的内容: TIA PORTAL wincc中配方recipe组态及配方视图的使用方法 但是,使用配方视图的时候感觉不是很方便,同时一部分使用人员也感…...

Java反射系列--方法大全

原文网址&#xff1a;Java反射系列--方法大全_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java反射相关的方法。 Class相关方法 方法 说明 getName() 返回String形式的该类的名称。 newInstance() 根据某个Class对象产生其对应类的实例&#xff0c;它调用的是此类的默认构…...

LeetCode 169. 多数元素

LeetCode 169. 多数元素 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 给定一个大小为 nnn 的数组 numsnumsnums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊n/2⌋⌊ n/2 ⌋⌊n/2⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给…...

来了,metaIPC1.0

metaRTC推出metaIPC正式版1.0&#xff0c;基于metaRTC6.0最新版二次开发&#xff0c;metaIPC是为嵌入式/摄像头量身打造的webRTC版IPC Camera&#xff0c;可安装在国内大多数Soc芯片上&#xff0c;如在君正/瑞芯微/MSTAR/海思等等已经有多个成熟产品应用。 New Feature 支持M…...

WireShark如何进行USB包协议分析

USB协议学习的步骤之一就是从抓包看协议通信,进而学习usb设备开发是怎么回事。这里发现一个工具就是wireshark。 WireShark如果要抓取usb设备的包,需要在安装的时候,选择usbpcap一并进行安装。...

蒙特卡洛随机模拟

蒙特卡洛随机模拟 简介 蒙特卡洛模拟是在计算机上模拟项目实施了成千上万次&#xff0c;每次输入都随机选择输入值。由于每个输入很多时候本身就是一个估计区间&#xff0c;因此计算机模型会随机选取每个输入的该区间内的任意值&#xff0c;通过大量成千上万甚至百万次的模拟…...

SAP FICO财务账期管理实战:关键配置与月结操作指南

1. SAP FICO财务账期管理基础概念 财务账期管理是SAP FICO模块中最基础也最重要的功能之一。简单来说&#xff0c;它就像财务部门的"门禁系统"&#xff0c;控制着哪些会计凭证能在特定时间段被录入系统。想象一下&#xff0c;如果超市收银台没有营业时间限制&#xf…...

避坑指南:关系数据库设计中90%人会犯的完整性约束错误(附真实案例)

避坑指南&#xff1a;关系数据库设计中90%人会犯的完整性约束错误&#xff08;附真实案例&#xff09; 在电商大促期间&#xff0c;某平台突然出现大量"幽灵订单"——用户支付成功后订单消失&#xff0c;而库存却异常扣减。技术团队紧急排查发现&#xff0c;问题根源…...

5分钟完成Axure RP界面本地化:从英文障碍到高效操作的蜕变指南

5分钟完成Axure RP界面本地化&#xff1a;从英文障碍到高效操作的蜕变指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-c…...

【STM32-HAL库】火焰传感器实战:从原理到智能火灾预警系统搭建(基于STM32F407ZGT6)

1. 火焰传感器原理与选型指南 火焰传感器作为火灾预警系统的"眼睛"&#xff0c;其核心原理是利用光电效应检测火焰特有的光谱特征。我经手过的工业项目中&#xff0c;90%的火灾误报都源于传感器选型不当。市面上常见的火焰传感器主要分为三类&#xff1a; 红外型&…...

极域电子教室破解神器:JiYuTrainer 让课堂学习更自由高效

极域电子教室破解神器&#xff1a;JiYuTrainer 让课堂学习更自由高效 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你是否厌倦了在计算机课堂上被极域电子教室完全控制&#xf…...

ESP32 SPI性能调优指南:从80MHz时钟到DMA配置,避开那些坑

ESP32 SPI性能调优实战&#xff1a;突破80MHz时钟与DMA配置的终极指南 当你在ESP32项目中遇到SPI通信速度瓶颈时&#xff0c;是否曾为如何突破80MHz时钟限制而苦恼&#xff1f;是否在配置DMA时踩过各种坑&#xff1f;本文将带你深入ESP32 SPI性能优化的核心领域&#xff0c;从硬…...

JAVA重点基础、进阶知识及易错点总结(10)Map 接口(HashMap、LinkedHashMap、TreeMap)

&#x1f680; Java 巩固进阶 第10天 主题&#xff1a;Map 接口深度解析 —— 键值对的高效艺术&#x1f4c5; 进度概览&#xff1a;掌握 Java 中最灵活的数据结构。 &#x1f4a1; 核心价值&#xff1a; 动态数据承载&#xff1a;SpringBoot 中接收前端动态参数 (Map<Stri…...

游戏原画效率提升50%:Pixel Fashion Atelier在角色装备概念图批量生成中的应用

游戏原画效率提升50%&#xff1a;Pixel Fashion Atelier在角色装备概念图批量生成中的应用 1. 传统游戏原画设计的痛点 游戏开发过程中&#xff0c;角色装备设计往往是最耗时的环节之一。传统工作流程中&#xff0c;美术团队需要&#xff1a; 手工绘制数十种装备变体反复修改…...

告别‘unbox’失败:Truffle项目初始化保姆级教程,从MetaCoin到自定义合约

告别‘unbox’失败&#xff1a;Truffle项目初始化保姆级教程&#xff0c;从MetaCoin到自定义合约 当你第一次接触Truffle框架时&#xff0c;那种兴奋感可能很快就会被truffle unbox metacoin命令失败的红字提示浇灭。别担心&#xff0c;这几乎是每个区块链开发者的必经之路。本…...

别再只用交叉熵了!医疗AI中疾病分级任务,试试PyTorch实现这个序数回归损失函数

医疗AI中的序数回归&#xff1a;超越交叉熵的疾病分级新范式 在医疗人工智能领域&#xff0c;我们经常遇到需要预测疾病严重程度分级的任务——从轻度到中度再到重度&#xff0c;这些类别之间存在明确的递进关系。传统做法是直接套用交叉熵损失函数&#xff0c;但这就像用尺子测…...