MyBatis简介及环境配置

news2024/11/27 3:48:10

文章目录

    • 一、什么是MyBatis
    • 二、MyBatis开发环境配置
      • 1.创建数据库表
      • 2.添加MyBatis框架支持
      • 3.配置连接字符串和MyBatis
      • 4.添加业务代码流程

一、什么是MyBatis

MyBatis是一种持久层框架,也是一种ORM框架(Object Relational Mapping即对象关系映射)。

其中是持久层框架代表着,使用它可以更简单的操作和读取数据库工具。

是ORM框架,说明MyBatis可以将OOP中的对象和关系型数据库中的数据建立起映射关系,自动完成数据和对象的互相转换:①将输入数据和sql映射成原生sql②将结果集映射成返回对象。

ORM将数据库映射成对象:

数据库->类

记录->对象

字段->对象属性

这意味着我们可以像操作对象操作数据库中的表,实现对象和数据库表之间的转换。

MyBatis支持自定义SQL(所有的sql需要自己去写,半自动),存储过程以及高级映射(多张表映射到一个对象中的多个属性)。使用它可以通过简单的XML配置或者注解辅助操作,但是现在用的更多的还是XML配置的方式。

二、MyBatis开发环境配置

1.创建数据库表

-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;

-- 使用数据数据
use mycnblog;

-- 创建表[用户表]
drop table if exists  userinfo;
create table userinfo(
    id int primary key auto_increment,
    username varchar(100) not null,
    password varchar(32) not null,
    photo varchar(500) default '',
    createtime timestamp default current_timestamp,
    updatetime timestamp default current_timestamp,
    `state` int default 1
) default charset 'utf8mb4';

-- 创建文章表
drop table if exists  articleinfo;
create table articleinfo(
    id int primary key auto_increment,
    title varchar(100) not null,
    content text not null,
    createtime timestamp default current_timestamp,
    updatetime timestamp default current_timestamp,
    uid int not null,
    rcount int not null default 1,
    `state` int default 1
)default charset 'utf8mb4';

-- 添加一个用户信息
INSERT INTO `mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`, `createtime`, `updatetime`, `state`) VALUES 
(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1),
(2, 'zhangsan', 'zhangsan', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);

-- 文章添加测试数据
insert into articleinfo(title,content,uid)
    values('Java','Java正文',1);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APqECCaj-1691465946131)(F:\typora插图\image-20230515161925545.png)]

2.添加MyBatis框架支持

老项目中加框架支持:

<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.3.0</version>
</dependency>
		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
</dependency>

说明:这里除了手动加框架外,还可以使用插件——editstarters,在pom.xml中右键->生成->查找想要的框架勾选->OK

新项目中添加框架支持:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yEqtCVpq-1691465946132)(F:\typora插图\image-20230515162420494.png)]

切记:这里是两个,一个是mysql的驱动和mybatis的框架。

why:数据库可不是只有Mysql一家,Mybatis为很多关系型数据库提供框架支持,对应到每个具体的数据库就需要单独的驱动。

何为驱动:直接驱动硬件

3.配置连接字符串和MyBatis

在整个项目中添加配置——application.properties文件中:

#协议,ip,端口号,是否用加密的方式(最后一个视本机电脑而定)
spring.datasource.url=jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=false
#用户名
spring.datasource.username=root
#注意!!password是本机的mysql的密码,不是固定的值
spring.datasource.password=111111
#设置Mysql的驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#设置MyBatis的驱动
mybatis.mapper-locations=classpath:/mybatis/*Mapper.xml

说明:这里的配置有两方面

  1. 数据库连接字符串设置——url、username、password、driver-class-name

  2. MyBatis的XML文件设置——保存查询数据库的具体操作sql的文件

    匹配一级

    可以匹配多个级别

除了上边两大部分是必须的外,我们还可以配置下边两个配置项,可以在测试的时候打印执行的sql,方便分析执行和问题的查找。

#日志打印实现+日志打印级别(我们自己的)==>打印mybatis执行的sql【默认输出info级别,但是这是属于debug级别的,所以我们需要修改日志打印级别】
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.com.example.demo=debug

4.添加业务代码流程

  • 添加表对应的实体类
  • 添加mapper接口(数据持久层),在下边建对应的接口
  • 添加相应表的xml设置(表相关具体方法实现)
  • 添加service
  • 添加controller
  • 使用postman/ajax测试

根据我们写的sql,建立对应的项目结构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PzZ9uapF-1691465946133)(F:\typora插图\image-20230515164049713.png)]

定义相应的实体类:

UserEntity:

package com.example.demo.entity;

import lombok.Data;
import lombok.Setter;

import java.time.LocalDateTime;

@Data
//不需要五大注解
public class UserEntity {
    //建议属性名和字段名设置相同,mybatis会自动实现关联
    private Integer id;
    private String username;
    private String password;
    private String photo;
    //原则:代码接收大于数据库字段类型即可
    //string 格式化,后期还是需要统一的对时间字段进行格式化处理
    private LocalDateTime createtime;
    private LocalDateTime updatatime;
    private Integer state;
}

ArticleInfo:

package com.example.demo.entity;

import lombok.Data;

import java.time.LocalDateTime;
@Data
public class ArticleInfo {
    private int id;
    private String title;
    private String content;
    private LocalDateTime createtime;
    private LocalDateTime updatatime;
    private int uid;
    private int rcount;
    private int state;
}

ArticleInfoVO:

package com.example.demo.entity.vo;

import com.example.demo.entity.ArticleInfo;
import lombok.Data;

@Data
public class ArticleInfoVO extends ArticleInfo {
    private String username;
    @Override
    public String toString() {
        return "ArticleInfoVO{" +
                "username='" + username + '\'' +
                "} " + super.toString();
    }
}

说明:

1.这里mapper下边显示的两个鸟是因为安装了个插件,没加的显示的时候是I

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yLpyw3Qg-1691465946133)(F:\typora插图\image-20230515170440555.png)]

2.因为ArticleInfo由lombok自动生成的toString方法,信息不完整,所以这里又重写了。当我们自己写了和lombok提供的一样的,以我们自己写的为主。

3.文章具体信息对应的实体类和ArticleInfo不属于同一级,所以这里又建了一级:vo,并在此中建立ArticleInfoVO,并重写toString方法

当我们想要完成一条sql操作的执行,就是先在mapper层声明方法,然后在对应的xml文件中实现即可。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM个人博客项目

文章目录 SSM个人博客系统实现项目介绍 一、准备工作0. 创建项目添加对应依赖1. 数据库设计2. 定时实体类 二、功能实现1.统一功能处理统一返回格式统一异常处理定义登录拦截器 2. 注册登录实现生成获取验证码密码加盐实现注册功能登录功能注销功能 3.登录用户博客列表获取登录…

提取字符串标签中的文字js

DOM操作&#xff1a; const extractText (str) > {const parser new DOMParser();const doc parser.parseFromString(str, text/html);const textNodes doc.body.innerText.trim().split(\n);return textNodes; };const input <div>提取文字</div><p>…

合思动态:合思商城上新「中转联程」功能

引言&#xff1a;正如合思创始人兼 CEO马春荃强调&#xff0c;面对各个行业对财务数字化有差异化需求&#xff0c;费控企业需要深入扎根细分行业探索多元化版本和解决方案&#xff0c;并根据行业实时需求快速迭代。合思的使命就是云产品服务的创新&#xff0c;实现降本增效、合…

基于STM32设计的出租车计费系统

一、项目介绍 在城市交通中&#xff0c;出租车是一种常见的交通工具。为了方便乘客和司机之间的交易&#xff0c;出租车计费系统被广泛应用于出租车行业。系统能够自动计算乘客的费用&#xff0c;提供准确、方便的计费服务&#xff0c;并且能够记录乘客的行驶数据&#xff0c;…

IDEA 指定spring.profiles.active本地启动

spring.profiles.activedev spring.profiles.activepro

SpringBoot项目配置文件

文章目录 一、配置文件作用二、配置文件格式三、properties配置文件说明基本语法读取配置文件优缺点 四、yml配置文件说明基本语法使用yml连接数据库使用yml配置不同数据类型及nullyml配置的读取配置字符串的单双引号问题配置对象 两种格式配置文件对比properties格式配置文件示…

Keburnetes YAML配置文件管理

Kubernetes 支持 YAML 和 JSON 格式管理资源对象JSON 格式&#xff1a;主要用于 api 接口之间消息的传递YAML 格式&#xff1a;用于配置和管理&#xff0c;YAML 是一种简洁的非标记性语言&#xff0c;内容格式人性化&#xff0c;较易读 YAML 语法格式 大小写敏感使用缩进表示层…

Linux之AWK

目录 Linux之AWK 定义 语法格式 常用选项 awk 变量 内置变量 格式 案例 &#xff08;1&#xff09;编写一个文本名字叫做awkdemo&#xff0c;里面内容如下 &#xff08;2&#xff09;FS指定输入分隔符 &#xff08;3&#xff09;OFS指定输出分隔符 &#xff08;4&#xf…

EditText设置inputType=“textPassword“后hint 英文字体不对,而且不能换行

问题如题,我先上图看下遇到的问题 ( ps: 我只想唱一句 : 你这该死的安卓~~ 让我心在痛 累在流!!!) 很明显字体偏大,字间隔很宽,关键还不会换行, 看一下我们需要的效果: 看到只要把 android:inputType"textPassword" 这一行干掉 一切就是我们想要的,但是产…

sonar 错误 提示 Synchronize on a new “Object“ instead.使用Id 作为锁

文章目录 错误分析先看sonar 给解决方案最终解决方案 public void synchronizedMethod(Integer id) {synchronized (id) {// Code to be synchronized}}错误分析 Synchronize on a new "Object" instead. 不应该在原始包装器&#xff08;即整数、长整型、布尔值等&am…

HDFS中的Trash垃圾桶回收机制

Trash垃圾桶回收机制 文件系统垃圾桶背景功能概述Trash Checkpoint Trash功能开启关闭HDFS集群修改core-site.xml删除文件到trash删除文件跳过从trash中恢复文件清空trash 文件系统垃圾桶背景 回收站&#xff08;垃圾桶&#xff09;是windows操作系统里的一个系统文件夹&#…

c#设计模式-创建型模式 之 工厂模式

前言&#xff1a; 工厂模式&#xff08;Factory Pattern&#xff09;是一种常用的对象创建型设计模式。该模式的主要思想是提供一个创建对象的接口&#xff08;也可以是抽象类、静态方法等&#xff09;&#xff0c;将实际创建对象的工作推迟到子类中进行。这样一来&#xff0c…

华为认证 | 云计算HCIE3.0改版后有什么变化?

随着技术的不断进步和行业的发展&#xff0c;云计算的HCIE作为华为公司的顶级认证&#xff0c;也进行了版本的更新。 那改版后有哪些变化呢&#xff0c;今天给大家讲讲。 01 HCIE认证简介 HCIE认证是华为公司旗下的顶级专业认证&#xff0c;面向IT领域的高级专业人士。 它涵…

华为数通题库,新一波分享来袭(有答案哟)

1、以下关于OSPF的Router ID描述不正确的是&#xff08;&#xff09;。&#xff08;多选&#xff09; A. OSPF协议正常运行的前提条件是该路由器有Router ID B. Router ID必须是路由器某接口的IP地址 C. 必须通过手工配置方式来指定Router IDD. 在同一区域内Router I D必须相同…

MobiSys 2023 | 基于毫米波振动测量的无接触材料识别

注1:本文系“无线感知论文速递”系列之一,致力于简洁清晰完整地介绍、解读无线感知领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; MobiCom, Sigcom, MobiSys, NSDI, SenSys, Ubicomp; JSAC, 雷达学报 等)。本次介绍的论文是:《MobiSys 2023 | 基于毫米波振…

高忆管理:股票低开说明什么?股价跟什么有关?

股票的开盘价和收盘价是投资者重视的重要指标&#xff0c;它反映了股票价值的变化。那么股票低开阐明什么&#xff1f;股价跟什么有关&#xff1f;高忆管理也为大家预备了相关内容&#xff0c;以供参阅。 股票低开阐明什么&#xff1f; 股票低开是指股票的开盘价低于上一个交易…

SpringCloud(31):Nacos配置管理基础应用

1 Nacos配置管理模型 对于Nacos配置管理&#xff0c;通过Namespace、group、Data ID能够定位到一个配置集。 配置集(Data ID) 在系统中&#xff0c;一个配置文件通常就是一个配置集&#xff0c;一个配置集可以包含了系统的各种配置信息&#xff0c;例如&#xff0c;一个配置集…

C 语言的转义字符

转义字符也叫转移序列&#xff0c;包含如下&#xff1a; 转移序列 \0oo 和 \xhh 是 ASCII 码的特殊表示。 八进制数示例&#xff1a; 代码&#xff1a; #include<stdio.h> int main(void) {char beep\007;printf("%c\n",beep);return 0; }结果&#xff1a; …

IntelliJ IDEA Bookmark使用

1 增加 右键行号栏 2 查看 从favorite这里查看 参考IntelliJ IDEA 小技巧&#xff1a;Bookmark(书签)的使用_bookmark idea 使用_大唐冠军侯的博客-CSDN博客

刘汉清:从生活到画布,宠物成为灵感源泉

出生于中国镇江的艺术家刘汉清&#xff0c;其作品展现出他对日常生活的深入洞察力&#xff0c;以及对美的独特理解。他的作品通常没有视觉参考&#xff0c;而是通过对他周围环境的理解&#xff0c;尤其是他的宠物&#xff0c;来进行创作。 在刘汉清的创作过程中&#xff0c;他…