使用MyBatis(1)

news2024/11/18 11:25:16

目录

一、什么是MyBatis

二、搭建MyBatis开发环境

🍅添加MyBatis依赖

🍅在数据库添加数据  

🍅设置MyBatis配置

         🎈数据库的相关连接信息🎈xml的保存和设置路径

三、使用MyBatis模式和语法操作数据库

        🍅接口:方法声明(给service层调用)

        🍅XML:实现接口

         🍅生成测试类

 四、相关插件下载


一、什么是MyBatis

MyBatis是一款持久层框架,支持自定义SQL、存储过程以及高级映射。可以嗲提JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或者注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。

它是更见但完成程序和数据库交互的工具,使得能够简单操作和读取数据库工具。

二、搭建MyBatis开发环境

🍅添加MyBatis依赖

创建Spring boot 时添加MyBatis的相关依赖

🍅在数据库添加数据  

drop database if exists mycnblog;

create database myblog DEFAULT CHARACTER SET utf8mb4;

-- 创建表[⽤户表]

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 datetime default now(),
 updatetime datetime default now(),
 `state` int default 1

) default charset 'utf8mb4';


-- 在表中添加数据
INSERT INTO `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)
;

🍅设置MyBatis配置

         🎈数据库的相关连接信息🎈xml的保存和设置路径

# 设置数据库的相关连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306?myblog?characterEncoding=utf8
spring.datasource.username=root
# 自己的mysql密码,不要写我的
spring.datasource.password=111111
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MyBatis配置信息
# myBatis的实现类
# 设置MyBatis XML存放路径和命名格式,
# 路径就是冒号后面的斜杠前面的,我这里时和.properties同级的mybatis包
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml

# 以上是必须要设置的,
# 以下是可选配置
# 配置MyBatis执行时打印SQL
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 设置日志级别
logging.level.com.example.demo=debug

        

        

三、使用MyBatis模式和语法操作数据库

首先先在数据库添加数据

常规写法包含了两个文件:

        🍅接口:方法声明(给service层调用)

定义实体类

@Data
public class UserInfo {
    private int id;
    private String username;
    private String password;
    private String photo;
    private LocalDateTime updatatime;
    private LocalDateTime createtime;
    private int state;

}

在接口中进行方法声明 

@Mapper  //数据持久层的标志
public interface UserMapper {
//UserInfo是一个自定义的实体类
    List<UserInfo> getAll();
}

        🍅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.example.demo.dao.UserMapper">
<!--    id是UserMapper的方法名-->
-- 查询操作,其他操作同理
    <select id="getAll" resultType="com.example.demo.model.UserInfo">
--         不写分号
            select * from userinfo
    </select>
</mapper>

         🍅生成测试类

@SpringBootTest     //一定要加该注解,目的是为了告诉当前的测试程序是运行在Springboot容器中的
class UserMapperTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    void getAll() {
    List<UserInfo> list = userMapper.getAll();
    System.out.println(list);
    }
}

 查询结果:

 四、相关插件下载

做完上述步骤以后,可以发现,UserMapper.xml实现了UserMapper接口,但是如果在接口和xml文件不叫多的情况下要对文件进行修改,这样找起来很麻烦,我们就可以下载一个mybatisx的插件。

 

 点击图标就可以直接跳转到对应的xml文件或者接口文件中。

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

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

相关文章

BGP的介绍

目录 BGP基础 BGP的发展历史 BGP在企业中的应用 距离矢量型协议和路径矢量型协议的区别 BGP的特征 1.可控性 2.可靠性 3.AS-BY-AS BGP的对等关系 BGP的数据包 1.open报文 2.Keepalive报文 3.Update报文 4.Notification 报文 5.Route-refresh报文 BGP的状态机 …

GitLab备份升级

数据备份(默认的备份目录在/var/opt/gitlab/backups/下&#xff0c;生成一个以时间节点命名的tar包。) gitlab-rake gitlab:backup:create新建repo源&#xff0c;升级新版本的gitlab vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] namegitlab-ce baseurlhttps://mirrors.…

EMQ X 集群部署

EMQ X 消息服务器集群基于 Erlang/OTP 分布式设计,集群原理可简述为下述两条规则: MQTT 客户端订阅主题时,所在节点订阅成功后广播通知其他节点:某个主题(Topic)被本节点订阅。 MQTT 客户端发布消息时,所在节点会根据消息主题(Topic),检索订阅并路由消息到相关节点。 1. 集…

ICLR 2023 | 用于分布外泛化的拓扑感知鲁棒优化

论文链接&#xff1a;https://openreview.net/pdf?idylMq8MBnAp 代码链接&#xff1a;GitHub - joffery/TRO: The Pytorch implementation for "Topology-aware Robust Optimization for Out-of-Distribution Generalization" (ICLR 2023) 01. 研究背景 近年来&…

虹科分享 | 工业4.0:IO-Link wireless等先进通信技术是不可或缺的支柱

近年来&#xff0c;随着工业4.0&#xff08;工业革命4.0&#xff09;的提出&#xff0c;制造业转型浪潮拉开帷幕。工业4.0是将数字技术整合到传统的制造流程中&#xff0c;从而创建智能工厂。对此类工厂的最初要求是工厂各个层面的完全连接&#xff0c;从制造车间一直到管理和云…

重大更新|Sui主网即将上线流动性质押,助力资产再流通

Sui社区一直提议官方上线流动质押功能&#xff0c;现在通过SIP过程&#xff0c;已经升级该协议以实现这一功能。 Sui使用委托权益证明机制&#xff08;DPoS&#xff09;来选择和奖励负责运营网络的验证节点。为了保障网络安全&#xff0c;验证节点通过质押SUI token获得质押奖…

win10小任务栏显示日期

win10存在一个问题, 就是任务栏为小任务栏时, 无法显示系统日期, 只能显示时间, 对这个问题有两个办法, 1, 把小任务栏改为大任务栏, 日期就能显示出来 但如果你就是想用小任务栏, 不想用大任务栏, 又想显示日期, 只靠win10内置的设置是没法实现的, 只能借助其他软件, 具体看…

HTTP协议揭秘:探寻互联网的背后密码、探秘数据传输的奥秘

HTTP&#xff08;超文本传输协议&#xff1a;Hypertext Transfer Protocol&#xff09;是一种用于在Web上传输数据的协议&#xff0c;它是互联网上最重要的应用层协议之一。从诞生至今&#xff0c;HTTP一直扮演着连接世界的通信桥梁的角色&#xff0c;在互联网的发展和普及中发…

数组练习题,数组的动态初始化

数组的遍历 定义一个数组&#xff0c;求和 int[] arr {1,2,3,4,5,6,7};int sum 0;for (int i 0; i <arr.length ; i) {sum sum arr[i];}System.out.println(sum);定义一个数组&#xff0c;统计数组里面一共有多少能够被3 整除的数字&#xff1a; int[] arr1 {4,62,8…

JavaScript快速入门:ComPDFKit PDF SDK 快速构建 Web端 PDF阅读器

JavaScript快速入门&#xff1a;ComPDFKit PDF SDK 快速构建 Web端 PDF阅读器 在当今丰富的网络环境中&#xff0c;处理 PDF 文档已成为企业和开发人员的必需品。ComPDFKit 是一款支持 Web 平台并且功能强大的 PDF SDK&#xff0c;开发人员可以利用它创建 PDF 查看器和编辑器&…

了解Unity编辑器之组件篇Playables和Rendering(十)

Playables 一、Playable Director&#xff1a;是一种用于控制和管理剧情、动画和音频的工具。它作为一个中央控制器&#xff0c;可以管理播放动画剧情、视频剧情和音频剧情&#xff0c;以及它们之间的时间、顺序和交互。 Playable Director组件具有以下作用&#xff1a; 剧情控…

数据结构初阶--栈和队列

目录 一.栈 1.栈的定义 2.顺序栈的功能实现 2.1.顺序栈的定义 2.2.顺序栈的初始化 2.3.顺序栈的判空 2.4.顺序栈的入栈 2.5.顺序栈的出栈 2.6.顺序栈的取栈顶元素 2.7.顺序栈的求栈的大小 2.8.顺序栈的销毁 2.9.完整程序 Stack.h Stack.c test.c 二.队列 1.队…

S475支持 ModbusRTU 转 MQTT协议采集网关

6路模拟量输入和2路RS485串口是一种功能强大的通信接口&#xff0c;可以接入多种设备和系统&#xff0c;支持4-20mA输出的传感器以及开关量输入输出。本文将详细介绍6路模拟量输入和2路RS485串口的应用场景和功能&#xff0c;重点介绍其在SCADA、HMI、远程数据监控以及采集控制…

机器学习——样本不均衡学习

1、样本不均衡定义 一般在分类机器学习中&#xff0c;每种类别的样本是均衡的&#xff0c;也就是不同目标值的样本总量是接近的&#xff0c;但是在很多场景下的样本没有办法做到理想情况&#xff0c;甚至部分情况本身就是不均衡情况&#xff1a; &#xff08;1&#xff09;很多…

[洛谷]P2052 [NOI2011] 道路修建(dfs)

在递归过程中也把子节点的贡献&#xff08;以及左右国家数记录下来了&#xff09;。 void dfs(int u,int fa) {d[u]1;//当前节点也算一个 for(int ih[u]; i; ine[i]) {int toe[i];//子节点if(tofa) continue;//防止重复搜索&#xff0c;即防止从下往上搜dfs(to,u);//子节点 //…

基于SSM+JSP+LayUI的宿舍管理系统

修正初始账号密码 默认账号&#xff1a;admin&#xff0c;默认密码&#xff1a;123456修复后台管理头像消失功能相对简单些&#xff0c;可能需要添加一些功能&#xff0c;需要源码免费提供需要运行服务、添加功能等联系我

springboot开放实验室管理系统【纯干货分享,免费领源码03361】

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是使用动态网页开发技术java作为系统的开发语言&#xff0c;M…

如何挑选滚珠螺杆的润滑油脂?

滚珠螺杆在日常使用中&#xff0c;出现卡顿或者噪音等问题&#xff0c;不用担心&#xff0c;不是你的滚珠螺杆出了问题&#xff0c;而是润滑系统出了问题&#xff0c;提醒你应该更换润滑油了。那么&#xff0c;我们应该怎样挑选滚珠螺杆的润滑油呢&#xff1f; 一般建议用轴承润…

hive整合es,详细过程。

参考官网 Apache Hive integration | Elasticsearch for Apache Hadoop [7.17] | Elastic 官网的介绍很简单&#xff0c;我看了很多博客&#xff0c;写的也很简单&#xff0c;但是我搞了半天才勉强成功&#xff0c;分享下&#xff0c;免得各位多走弯路。 环境准备 官网也很…

K8S暴露pod内多个端口

K8S暴露pod内多个端口 一、背景 公司统一用的某个底包跑jar服务&#xff0c;只暴露了8080端口 二、需求 由于有些服务在启动jar服务后&#xff0c;会启动多个端口&#xff0c;除了8080端口&#xff0c;还有别的端口需要暴露&#xff0c;我这里就还需要暴露9999端口。 注&a…