SpringBoot中数据库的连接及Mybatis的配置和使用

目录

1 在pom.xml中引入相关依赖

2 对数据库进行配置

2.1 配置application.yml

2.2 idea连接数据库 (3.2.1有用到)

3 Mybatis的使用

3.1 测试文件的引入

3.2 使用

3.2.1 使用注解(有小技巧(✪ω✪))

3.2.2 使用动态sql


1 在pom.xml中引入相关依赖

<dependencies><!--    web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--        lombok依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--下面两个为数据库和MySQL的依赖,上面两个为项目运行/测试所需依赖--><!--      mysql驱动依赖--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><!--    mybatis依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency>
</dependencies>

2 对数据库进行配置

测试数据库的创建如下:

create database test;
use test;CREATE TABLE user
(id       INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50)
);INSERT INTO user (username)
VALUES ('user1');
INSERT INTO user (username)
VALUES ('user2');
INSERT INTO user (username)
VALUES ('user3');
INSERT INTO user (username)
VALUES ('user4');
INSERT INTO user (username)
VALUES ('user5');

2.1 配置application.yml

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver    #固定的url: jdbc:mysql://localhost:3306/test #连接的是测试用的test数据库username: root    #用户名password: 11235813    #密码

2.2 idea连接数据库 (3.2.1有用到)

3 Mybatis的使用

3.1 测试文件的引入

创建文件结构如下:

相关代码如下: 

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private Integer id;private String username;
}
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/list")public List<User> list() {return userService.list();}
}
public interface UserService {List<User> list();
}
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> list() {return userMapper.list();}
}
@Mapper
public interface UserMapper {List<User> list();
}

3.2 使用

3.2.1 使用注解(有小技巧(✪ω✪))

在UserMapper中书写如下内容:

@Mapper
public interface UserMapper {@Select("select * from user")List<User> list();
}

运行可以在浏览器看到:

这里有个小技巧

当我们不使用这个技巧的时候,注解中的语句没有提示只能自己敲,而如果我们让idea连接了数据库 ,并按如下方法进行配置,就会有提示,操作如下:

 

3.2.2 使用动态sql

①在resource下建立同样的目录结构并创建xml文件,比如:你之前的UserMapper.class在com.itheima.mapper下,你的UserMapper.xml也要在同样的目录结构下

 ②向创建好的文件中添加如下固定模板:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
//这里的com.itheima.mapper.UserMapper,为该xml的对应文件UserMapper.class的位置
//如果换了其它的Mapper,namespace中的内容也要改
<mapper namespace="com.itheima.mapper.UserMapper"></mapper>

③完善内容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.UserMapper"><!--动态SQL--><!--这里的id为UserMapper.class文件中对应的方法名--><!--这里的resultType为返回的数据类型,这里返回User--><select id="list" resultType="com.itheima.pojo.User"><!--这只是一种比较粗浅的用法,仅用于举例,动态SQL配合专门标签食用更佳--><!--比如:<where>、<if>等等,这里不做赘述-->select * from user</select>
</mapper>

测试结果同上

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

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

相关文章

海外多语言盲盒开发:打破语言障碍,连接全球消费者

随着全球化的加速和互联网的普及&#xff0c;语言障碍成为了影响跨国交流和商业活动的重要因素。为了满足跨国市场的需求&#xff0c;海外多语言盲盒开发成为了一个新兴的领域。本文将探讨海外多语言盲盒开发的意义、现状和未来发展。 一、海外多语言盲盒开发的意义 在全球化…

RedHat8.4安装邮件服务器

一、配置发件服务器 1.1 根据现场IP&#xff0c;配置主机名 vim /etc/hosts 192.168.8.120 mail.test.com 将主机名更改为邮件服务器域名mail.test.com 1.2 关闭防火墙&#xff0c;禁止开机启动 systemctl stop firewalld systemctl disable firewalld 1.3 关闭selinux v…

基于springboot就业信息管理系统源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;就业信息管理系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而…

InnoDB 锁系统(小白入门)

1995年 &#xff0c;MySQL 1.0发布&#xff0c;仅供内部使用&#xff01; 开发多用户、数据库驱动的应用时&#xff0c;最大的一个难点是&#xff1a;一方面要最大程度地利用数据库的并发访问&#xff0c;另一方面还要确保每个用户能以一致性的方式读取和修改数据。 MVCC 并发…

基于python+控制台的员工信息管理系统

基于python控制台的员工信息管理系统 一、系统介绍二、效果展示三、其他系统实现四、获取源码 一、系统介绍 1.添加职工数据 2.显示职工数据 3.查询职工数据 4.修改职工数据 5.删除职工数据 6.保存职工数据 7.排序职工数据 8.统计职工工资数据 9.退出 二、效果展示 三、其他系…

从搜索引擎到答案引擎:LLM驱动的变革

在过去的几周里&#xff0c;我一直在思考和起草这篇文章&#xff0c;认为谷歌搜索正处于被颠覆的边缘&#xff0c;它实际上可能会影响 SEO 作为业务牵引渠道的可行性。 考虑到谷歌二十多年来的完全统治地位&#xff0c;以及任何竞争对手都完全无力削弱它&#xff0c;坦率地说&…

CSS transition(过渡效果)详解并附带示例

CSS过渡效果&#xff08;CSS transitions&#xff09;是一种在元素属性值发生变化时&#xff0c;通过指定过渡效果来实现平滑的动画效果的方法。通过定义起始状态和结束状态之间的过渡属性&#xff0c;可以使元素的变化更加流畅和可视化。 过渡效果的基本语法如下&#xff1a;…

远程监控电脑软件会保存哪些记录?

远程监控电脑软件是一种功能强大的辅助工具&#xff0c;能够监控到各种各样的东西&#xff0c;常被企业用于管理员工。那么&#xff0c;远程监控电脑软件都会监控保存哪些记录呢&#xff1f; 一、网络活动 无论是浏览器访问记录、下载记录还是网络聊天记录&#xff0c;它都能…

疑惑问题总结

目录 问题总结 1. 布局为啥用不同盒子,我只想用div ? 2. 为啥用辣么多类名? 3. 到底用margin还是 padding ? 4. 自己做没有思路? 最后一定多运用辅助工具,比如屏幕画笔,ps等等 问题总结 1. 布局为啥用不同盒子,我只想用div ? 标签都是有语义的,合理的地方用合理的标…

乐意购项目前端开发 #6

一、商品详情页面 代码模版 创建Detail文件夹, 然后创建index.vue文件 <script setup> import { getDetail } from "/api/goods/index"; import { ref, onMounted } from "vue"; import { useRoute } from "vue-router"; import { useCar…

P8722 [蓝桥杯 2020 省 AB3] 日期识别--2024蓝桥杯冲刺省一

点击跳转例题 知识点&#xff1a;字符串总结 注意事项在代码中 #include <bits/stdc.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl \n #define LL __int128using namespace std;const int N2e610,M1e310,mod998244353,INF0x3f…

SpringBoot 登录检验JWT令牌 生成与校验

JWT官网 https://jwt.io/ 引入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>设置过期时间 LocalDateTime localDateTime LocalDateTime.now().…

STM32--SPI通信协议(1)SPI基础知识总结

前言 I2C (Inter-Integrated Circuit)和SPI (Serial Peripheral Interface)是两种常见的串行通信协议&#xff0c;用于连接集成电路芯片之间的通信&#xff0c;选择I2C或SPI取决于具体的应用需求。如果需要较高的传输速度和简单的接口&#xff0c;可以选择SPI。如果需要连接多…

驾照考试-科目三

有车阻挡 先踩刹车或者自然降速,估计要停了就踩离合换1档,然后踩刹车,再半制动起步,起步后再踩油门换2挡,然后维持速度。如果估计不会停,就等距离合适后再踩油门启动。(一般是停好些) 准备 上车,系安全带,调座位和镜子,检测灯光,手刹,挡位,远近交替灯闪两下,…

css1字体属性

一.font-family(字体系列&#xff09; 不同字体系统用&#xff0c;隔开&#xff1b; 多个字母的字体系统用“”&#xff1b; 二.font-size&#xff08;字体大小&#xff09;&#xff08;有单位px&#xff09;&#xff08;默认字体16px&#xff09; 三.font-weight&#xff08…

Leetcode—535. TinyURL 的加密与解密【中等】

2024每日刷题&#xff08;110&#xff09; Leetcode—535. TinyURL 的加密与解密 实现代码 class Solution { public:// Encodes a URL to a shortened URL.string encode(string longUrl) {while(!urlToCode.count(longUrl)) {string code;for(int i 0; i < 6; i) {code…

如何快速上手VUE框架并写出VUE简单的增删改查的的开发代码

要快速上手Vue框架并编写简单的增删改查&#xff08;CRUD&#xff09;开发代码&#xff0c;可以遵循以下步骤&#xff1a; 步骤1&#xff1a;了解Vue基本概念和原理 在开始编写代码之前&#xff0c;需要了解Vue的基本概念和原理&#xff0c;包括组件、数据双向绑定、指令、生命…

Blender使用Rigify和Game Rig Tool基础

做动画需要的几个简要步骤&#xff1a; 1.建模 2.绑定骨骼 3.绘制权重 4.动画 1.Rigify是干嘛用的&#xff1f; 》 绑定骨骼 2.Game Rig Tool干嘛用的&#xff1f; 》 修复Rigify绑定骨骼做的动画导入游戏引擎的问题&#xff0c;如果Rigify自身修复了就不需要这个插件了&#…

Python算法100例-1.2 兔子产子

完整源代码项目地址&#xff0c;关注博主私信’源代码’后可获取 1&#xff0e;问题描述 有一对兔子&#xff0c;从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子&#xff0c;假设所有的兔子都不死&#xff0c;问30个月内每个月的兔子总对数为…

docker镜像变量传递

docker镜像变量传递问题 直接使用变量似乎读取不到 [rootvm t]# cat Dockerfile FROM centos:7.9.2009 ENV JAVA_OPTS " -Xloggc:/opt/${HOSTNAME}.log" CMD ["/usr/sbin/sshd", "-D"] docker build -t centos:env-tag . docker run -itd --na…