Mybatis入门(入门案例,IDEA配置SQL提示,JDBC介绍,lombok介绍)

server/2024/11/14 12:47:48/

目录

  • 一、Mybatis入门案例
    • 介绍
    • 整体步骤
    • 创建SpringBoot项目
    • pom依赖
    • 准备测试数据
    • 新建实体类
    • 配置Mybatis数据库连接信息
    • 新建接口类,编写SQL代码
    • 单元测试
  • 二、IDEA配置SQL提示
  • 三、JDBC
    • 是什么
    • 案例
    • JDBC和Mybatis对比
  • 四、数据库连接池
    • 介绍
    • 如何实现一个数据库连接池
    • 切换数据库连接池
  • 五、lombok
    • 介绍
    • 依赖和插件

一、Mybatis入门案例

介绍

在这里插入图片描述

整体步骤

在这里插入图片描述

创建SpringBoot项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pom依赖

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.8</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.zcy</groupId><artifactId>mybatis-quick-start</artifactId><version>0.0.1-SNAPSHOT</version><name>mybatis-quick-start</name><description>Demo project for Spring Boot</description><properties><java.version>8</java.version></properties><dependencies><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>3.0.3</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

准备测试数据

新建数据库mybatis:
create database mybatis charset utf8;

插入测试数据:

create table user
(id     int unsigned primary key auto_increment comment 'ID',name   varchar(100) comment '姓名',age    tinyint unsigned comment '年龄',gender tinyint unsigned comment '性别, 1:男, 2:女',phone  varchar(11) comment '手机号'
) comment '用户表';insert into user(id, name, age, gender, phone)
VALUES (null, '白眉鹰王', 55, '1', '18800000000');
insert into user(id, name, age, gender, phone)
VALUES (null, '金毛狮王', 45, '1', '18800000001');
insert into user(id, name, age, gender, phone)
VALUES (null, '青翼蝠王', 38, '1', '18800000002');
insert into user(id, name, age, gender, phone)
VALUES (null, '紫衫龙王', 42, '2', '18800000003');
insert into user(id, name, age, gender, phone)
VALUES (null, '光明左使', 37, '1', '18800000004');
insert into user(id, name, age, gender, phone)
VALUES (null, '光明右使', 48, '1', '18800000005');

在这里插入图片描述

新建实体类

  • 实体类封装的就是user表中的每一条记录 所以字段要一一对应

在这里插入图片描述

配置Mybatis数据库连接信息

在这里插入图片描述

新建接口类,编写SQL代码

在这里插入图片描述

单元测试

在这里插入图片描述

执行结果:
在这里插入图片描述

二、IDEA配置SQL提示

在上面UserMapper里写的SQL语句,目前IDEA只是把他当成一个字符串,没有智能提示,需要进行以下配置:
在这里插入图片描述

这样配置完之后,一些关键字就会有提示,而且写错了还会报错.
但是发现IDEA仍然识别不到数据表.

在这里插入图片描述

这是因为IDEA和数据库没有建立连接,不能识别表信息,还需要配置一下
这里IDEA连接MySQL数据库可以参考:如何使用IDEA直接连接MySQL数据库
在这里插入图片描述
要精确到具体数据库:
在这里插入图片描述

这样就会自动提示,而且不会报错
在这里插入图片描述

三、JDBC

是什么

在这里插入图片描述

案例

在这里插入图片描述

    @Testpublic void testJdbc() throws Exception {//1. 注册驱动 告诉JDBC要使用哪一个驱动类Class.forName("com.mysql.cj.jdbc.Driver");//2. 获取连接对象String url = "jdbc:mysql://localhost:3306/mybatis";String username = "root";String password = "zcygst666";Connection connection = DriverManager.getConnection(url, username, password);//3. 获取执行SQL的对象Statement,执行SQL,返回结果String sql = "select * from user";Statement statement = connection.createStatement();ResultSet resultSet = statement.executeQuery(sql);//4. 解析并封装结果数据List<User> userList = new ArrayList<>();while (resultSet.next()){int id = resultSet.getInt("id");String name = resultSet.getString("name");short age = resultSet.getShort("age");short gender = resultSet.getShort("gender");String phone = resultSet.getString("phone");User user = new User(id,name,age,gender,phone);userList.add(user);}//5. 释放资源statement.close();connection.close();System.out.println(userList);}

JDBC和Mybatis对比

Mybatis用配置文件的方式解决硬编码问题
SpringBoot又会自动完成数据封装
如果用spring.datasource(数据源)的方式来配置数据库连接信息,那么SpringBoot底层就会自动采用数据库连接池技术来统一分配并管理这些连接(Connection)
这和线程池很像,连接可以复用
在这里插入图片描述

在这里插入图片描述

四、数据库连接池

介绍

在这里插入图片描述

如何实现一个数据库连接池

即实现DataSource接口,一般不需要自己手动去实现,直接用开源的就行
在这里插入图片描述

切换数据库连接池

比如想要切换到Druid数据库连接池:官方地址
只需要在pom文件里引入,然后重新加载即可

<!--druid连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency>

然后再执行SpringBoot单元测试,发现日志里的数据库连接池信息已经改变了
在这里插入图片描述
且配置文件可以有下面两种写法:
在这里插入图片描述

五、lombok

介绍

在这里插入图片描述

在这里插入图片描述

依赖和插件

      <!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/server/16804.html

相关文章

CentOS 7虚拟机配置过程中所需组件的安装(二)

1.安装net-tools组件&#xff08;解决无 ifconfig&#xff09; # yum install net-tools 2.安装gcc、c编译器以及内核文件 # yum -y install gcc gcc-c kernel-devel 验证安装成功 3.安装nano&#xff08;文本编辑器&#xff09; # yum install nano

英特尔数据中心渠道业务部总经理蒋健一行到访Gooxi

4月16日&#xff0c;英特尔数据中心渠道业务部总经理蒋健一行到访Gooxi&#xff0c;在Gooxi公司董事长兼总裁赵士亮等领导陪同下参观了深圳研发总部并进行深入交流&#xff0c;详细了解Gooxi在Intel产品线的业务布局、产品研发、市场营销等领域的合作成果。 Gooxi公司董事长兼总…

Day09-Java进阶-集合体系通用遍历方式List集合数据结构ArrayList-LinkedList

1. 集合体系结构 1.1 集合体系结构介绍 1.2 Collection 的使用 package com.itheima.domain;import java.util.Objects;public class Student {private String name;private int age;Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getCl…

机器学习day3

一、距离度量 1.欧氏距离 2.曼哈顿距离 3.切比雪夫距离 4.闵可夫斯基距离 二、特征与处理 1.数据归一化 数据归一化是一种将数据按比例缩放&#xff0c;使之落入一个小的特定区间的过程。 代码实战 运行结果 2.数据标准化 数据标准化是将数据按照其均值和标准差进行缩放的过…

如何解决Servlet异常:深入解析`NumberFormatException`

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Redis缓存淘汰策略分析

一、概述 redis缓存是在内存中保存数据&#xff0c;避免业务从数据库中读取数据&#xff0c;从而提升系统的响应速度&#xff0c;而redis缓存淘汰是指当缓存数据达到一定容量时&#xff0c;为了给新的数据腾出空间&#xff0c;需要按照一定的策略从缓存中移除旧的数据。 二、r…

每日两题 / 46. 全排列 41. 缺失的第一个正数(LeetCode热题100)

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 经典回溯题&#xff0c;每次搜索选择未选择数字中的一个 当选择了n个数时&#xff0c;将已经选择的数加入答案 class Solution { public:vector<vector<int>> permute(vector<int>& nums) {vector…

图论应用——拓扑排序

拓扑排序的原理和宽度优先搜索差不多 #include <iostream> #include <cstring> #include <algorithm> using namespace std;const int N 100010; int n,m; int h[N],e[N],ne[N],idx; int q[N],d[N];void add(int a,int b) {e[idx]b,ne[idx]h[a],h[a]idx; }…