mybatis 的快速入门以及基于spring boot整合mybatis(一)

MyBatis基础

MyBatis是一款非常优秀的持久层框架,用于简化JDBC的开发

准备工作:
   1,创建sprong boot工程,引入mybatis相关依赖2,准备数据库表User,实体类User3, 配置MyBatis(在application.properties中数据库连接信息)4,编写Mybatis程序:编写MyBatis的持久层接口,定义SQL(注解/XML)

创建spring boot工程,并且引入相关的依赖。

1,在自己的工程下右击,然后点击new,选择module。

选择:spring Initializr 右边的配置根据自己情况选择。

选择spring boot的版本和要添加的依赖,最后点击创建。

查看pom文件

         <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.31</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.11</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

2,准备数据库库表user

create table user(id int unsigned primary key auto_increment comment 'ID,主键',username varchar(20) comment '用户名',password varchar(32) comment '密码',name varchar(10) comment '姓名',age tinyint unsigned comment '年龄'
) comment '用户表';insert into user(id, username, password, name, age) values (1, 'daqiao', '123456', '大乔', 22),(2, 'xiaoqiao', '123456', '小乔', 18),(3, 'diaochan', '123456', '貂蝉', 24),(4, 'lvbu', '123456', '吕布', 28),(5, 'zhaoyun', '12345678', '赵云', 27);

和实体类User


@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String username;private String password;private String name;private Integer age;
}

3,在application.properties配置文件中添加连接数据库的配置。

#配置数据库连接信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/tlias
spring.datasource.username=root
spring.datasource.password=root

4,编写程序测试:

在com.sde包下创建子包mapper包,并创建一个UserMapper接口

mapper接口的代码:
@Mapper
public interface UserMapper {/*** 根据用户名查询* @param username* @return*/@Select("select * from user where username = #{username}")public User getByUsername(String username);/*** 查询全部用户* @return*/@Select("select id, username, password, name, age from user")public List<User> selectAll();/*** 根据id删除* @param id*/@Delete("delete from user where id = #{id}")public void delUser(Integer id);/*** 根据id修改用户信息* @param user*/@Update("update user set username = #{username},password = #{password},name = #{name},age = #{age} where id = #{id}")public void updateUser(User user);/*** 添加用户信息* @param user*/@Insert("insert into user values(null,#{username},#{password},#{name},#{age})")public void addUser(User user);}
在test类中测试

代码:

   @Autowiredprivate UserMapper2 userMapper;@Test@DisplayName("测试查询全部")public void testSelectAll(){List<User> userList = userMapper.selectAll();userList.forEach(e -> System.out.println(e));}@Test@DisplayName("测试删除")public void testDel(){userMapper.delUser(8);}@Test@DisplayName("测试修改")public void testUpdate(){userMapper.updateUser(new User(7,"wxx","111","王星星",20));}@Test@DisplayName("测试添加")public void testAdd(){userMapper.addUser(new User(null,"java","111222","Java开发",55));}@Test@DisplayName("测试根据用户名查询")public void testGetByUsername(){User user = userMapper.getByUsername("daoen");System.out.println(user);}

辅助配置:
语法提示配置
  • 在写mysql语句的行,右击找到 Show Context Action。
  • 然后点击,inject language for reference。
  • 找到MySQL点击确定。
  • 当已经配置过这个语法提示的时候,在点击Show Context Action,会出现 Uninject language for reference。点击一下就去掉了语法提示。在重复上面的步骤,添加即可。

然后找到 inject language for reference

选择MySQL 双击即可。

 看这里代码颜色就不一样了。

如果已经配置,在SQL语句上面右击,会出现  Uninject language for reference。点击这个就去掉了。

看效果:SQL语句全部变成了绿色。就去掉了

 

日志输出:

默认情况下,我们在mybatis中SQL语句执行时,我们看不到SQL语句执行的日志,配置一下配置,就可以看到在控制台输出的sql语句提示了。

在application.properties 配置文件中。添加 一面代码就行

#mybatis 的日志信息 -- 输出控制台 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

#配置数据库连接信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sde01
spring.datasource.username=root
spring.datasource.password=root#mybatis 的日志信息  -- 输出控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

 JDBC VS Mybatis  对比

看图说话

mybatis相比于jdbc可以很好的操作数据库并且能够简化代码开发。所以我们在以后项目和开发中,选取的是mybatis。

数据库连接池

  • 1,数据库连接池是一个容器,负责分配、管理数据库连接(Connection)。
  • 2,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
  • 3,释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。

优势:

​ 资源重用 ​

提升系统响应速度

​ 避免数据库连接遗漏 ​

标准接口:DataSource ​

官方(sun)提供的数据库连接池接口,由第三方组织实现此接口。

功能:获取连接 ​ Connection getConnection() throws SQLException;

常见产品:

Druid(德鲁伊) ​

  • 功能强大,性能优秀,是Java语言最好的数据库连接池之一
  • Druid连接池是阿里巴巴开源的数据库连接池项目

spring boot默认使用的是 Hikari连接池

通过上面的图片,我们可以看到,即便我们没有配置数据库连接池,也是有数据库连接池的。是spring boot默认自带的连接池(Hikari 追光者) 

现在我们配置我们的国产数据库连接池 Druid数据库连接池。

先引入依赖:

        <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.11</version></dependency>

在application.propertise 配置文件里面配置

配置的代码信息:

#配置druid连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#配置数据库连接信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/tlias
spring.datasource.username=root
spring.datasource.password=root

xml映射配置

在Mybatis中,既可以通过注解配置SQL语句,也可以通过XML配置文件配置SQL语句。

规则:

  • ​ 1,XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。
  • 2,XML映射文件的namespace属性为Mapper接口全限定名一致。
  • 3,XML映射文件中sql语句的id与Mapper 接口中的方法名一致,并保持返回类型一致。

1,同包同名:

在resource是目录下,右击点击new然后选择Directory

切记在Directory里面,不是以逗号分割,而是用/分割。因为在电脑中,不同级别的目录,是/分开的,不是点。

这是一个错误的示范:

下面这个是正确的示范:

 

 点击回车就创建成功了。

刚创建好长这样,下面添加一个和UserMapper,同名的xml文件

 然后就创建成功了。

xml根标签

<?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=""><!--根节点--></mapper>

 2,namespace属性为Mapper接口全限定名一致

右击UserMapper接口,点击 Copy Path/Refernence

接着点击  copy Reference

 

最后粘贴到 刚刚创建的UserMapper.xml 配置文件中的namespace里面

3,sql语句的id与Mapper 接口中的方法名一致

在UserMapper接口里面 

在xml文件里面

<?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="com.sde.mapper.UserMapper"><!--根节点--><select id="selectAll" resultType="com.sde.pojo.User">select * from user</select></mapper>

在service包下面编写UserService接口

 在service包里面,在创建一个子包,impl包,并创建UserServiceImpl这个实现类

 在controller包中编写 UserController 

 启动项目,在Apifox里面测试

看控制台的输出

MyBatisX:

是一款基于 IDEA 的快速开发Mybatis的插件,为效率而生。

安装:

点击 file然后点击settings 找到 plugs搜索要下载的插件,然后点击install。

因为我是之前就下载好的,所以页面提示让我更新。没有安装过的话,会先让安装。

 安装好之后,就会发现我们的页面左侧就多了一个小鸟的标记。

安装好mybatisX插件之后,会发现我们在接口里面定义好方法,如果还没有写SQL语句,他会有一个红色的波浪线提示我们。

在红色波浪线处,右击就会出现这个页面。

点击 Generate statement 

 然后它就会在UserMapper.xml配置文件中生成一个标签。

 点击这边的小鸟,可以跳转到绑定的类或者对应接口的方法。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C 语言 变量

变量初始值 全局变量&#xff1a;初始值是 0 局部变量&#xff1a;初始值是 随机的 类型限定符 通常不需要显式使用 register 关键字来优化变量的存储和访问。 关键字 _Complex和_Imaginary分别用于表示复数和虚数&#xff08;二者皆是数学概念&#xff09; 变量的声明和定义 c…

dell服务器重启后显示器黑屏

1.硬件层面&#xff1a;观察主机的指示灯 &#xff08;1&#xff09;指示灯偏黄&#xff0c;硬件存在问题&#xff08;内存条有静电&#xff0c;拔出后用橡皮擦擦拭&#xff1b;或GPU松动&#xff09; a.电源指示灯黄&#xff0c;闪烁三下再闪烁一下&#xff0c;扣下主板上的纽…

学习pytorch18 pytorch完整的模型训练流程

pytorch完整的模型训练流程 1. 流程1. 整理训练数据 使用CIFAR10数据集2. 搭建网络结构3. 构建损失函数4. 使用优化器5. 训练模型6. 测试数据 计算模型预测正确率7. 保存模型 2. 代码1. model.py2. train.py 3. 结果tensorboard结果以下图片 颜色较浅的线是真实计算的值&#x…

IDEA删除最近打开的文件记录

IDEA删除最近打开的文件记录 遇见问题&#xff1a;如何删除IDEA中最近打开的文件记录 解决方法 先关闭IDEA 找到 recentProjects.xml 文件 windows 位置&#xff1a;&#xff08;AppData是隐藏文件夹&#xff09; 1.C:\Users\电脑用户名\AppData\Roaming\JetBrains\IntelliJIde…

Spring基于注解开发

Component的使用 基本Bean注解&#xff0c;主要是使用注解的方式替代原有的xml的<bean>标签及其标签属性的配置&#xff0c;使用Component注解替代<bean>标签中的id以及class属性&#xff0c;而对于是否延迟加载或是Bean的作用域&#xff0c;则是其他注解 xml配置…

vue使用甘特图dhtmlxgantt + gantt.addTaskLayer

效果图&#xff1a; 甘特图 官网地址 gantt安装与使用 vue版---部分功能收费 安装gantt 或 引入文件 npm install dhtmlx-gantt -save或import gantt from "/public/static/dhtmlxgantt/dhtmlxgantt.js"; import "/public/static/dhtmlxgantt/locale/local…

深度学习在单线性回归方程中的应用--TensorFlow实战详解

深度学习在单线性回归方程中的应用–TensorFlow实战详解 文章目录 深度学习在单线性回归方程中的应用--TensorFlow实战详解1、人工智能<-->机器学习<-->深度学习2、线性回归方程3、TensorFlow实战解决单线性回归问题人工数据集生成构建模型训练模型定义损失函数定义…

pair的用法,详解

1.pair是什么 pair名为二元组&#xff0c;顾名思义&#xff0c;就是储存二元组的。 2.pair的初始化 pair<第一个值类型, 第二个值类型> pr 第一个值类型&#xff1a;要储存的第一个值的数据类型第二个值类型&#xff1a;要储存的第二个值的数据类型pair<int, int&g…

【数据结构】顺序表的定义和运算

目录 1.初始化 2.插入 3.删除 4.查找 5.修改 6.长度 7.遍历 8.完整代码 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &…

关于mysql高版本使用groupby导致的报错

在开发时&#xff0c;遇到mysql版本在5.7.X及以上版本时使用group by 语句会报以下的错误 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column business_typ…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(1)- map、flatmap和filter

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

GPTs的创建与使用,自定义GPTs中的Actions示例用法 定义和执行特定任务的功能模块 通过API与外部系统或服务的交互

Name 等 Logo:自动生成 Name 介绍 Description 介绍 Instructions 要求或命令等 比如用中文回复&#xff0c;角色。 Knowledge 上传你的知识库&#xff0c;如果你有某一垂直行业的数据&#xff0c;基于数据来回答。比如我有某个芯片的指令集。 Capabilities 都要 Actions&…

Python OS模块常用方法整理

os模块包含了普遍的操作系统和文件目录方法 引入类库 首先需要引入类库 import os 常用方法 OS模块方法 获取操作系统类型 nt->window:Microsoft Windows NT posix->Linux/Mac OS: Portable Operating System Interface of UNIX&#xff08;可移植操作系统接口&…

Python VSCode 配置固定的脚本入口

Python VSCode 配置固定的脚本入口 打开或者新建一个启动配置 选择 .vscode目录下 launch.json文件 将 “program”: “${file}” 替换成 “program”: “mian.py”, //完成你自己的入口.py文件名即可 json启动配置文件 {// Use IntelliSense to learn about possible attrib…

C++数据结构:B树

目录 一. 常见的搜索结构 二. B树的概念 三. B树节点的插入和遍历 3.1 插入B树节点 3.2 B树遍历 四. B树和B*树 4.1 B树 4.2 B*树 五. B树索引原理 5.1 索引概述 5.2 MyISAM 5.3 InnoDB 六. 总结 一. 常见的搜索结构 表示1为在实际软件开发项目中&#xff0c;常用…

使用条件格式突出显示单元格数据-sdk

使用条件格式突出显示单元格数据 2023 年 12 月 6 日 根据数据值将视觉提示应用于特定单元格、行或列&#xff0c;从而更轻松地识别模式和趋势。 网格中的条件格式允许用户根据单元格或范围包含的数据将视觉样式应用于单元格或范围。它通过以数据驱动的方式突出显示关键值、异常…

【3】密评-物理和环境安全测评

0x01 依据 GB/T 39786 -2021《信息安全技术 信息系统密码应用基本要求》针对等保三级系统要求&#xff1a; 物理和环境层面&#xff1a; a&#xff09;宜采用密码技术进行物理访问身份鉴别,保证重要区域进入人员身份的真实性&#xff1b; b&#xff09;宜采用密码技术保证电子门…

【面试经典150 | 二叉树】从中序与后序遍历序列构造二叉树

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;递归 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容…

VS2009和VS2022的错误列表可复制粘贴为表格

在VS2019或VS2022中&#xff0c;可看到如下错误列表&#xff1a; 如果复制这两行错误信息&#xff1a; 然后把它粘贴到word文件&#xff0c;就可以看到以下表格&#xff1a; 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E0020 未定义标识符 "dd"…

【Redis】Redis 的学习教程(十三)Redis 各场景

由于Redis 支持比较丰富的数据结构&#xff0c;因此他能实现的功能并不仅限于缓存&#xff0c;而是可以运用到各种业务场景中&#xff0c;开发出既简洁、又高效的系统 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-bo…