mybatis的基于注解和xml的两种实现方式详解

news/2024/10/20 5:35:30/

文章简介

本文介绍了springboot+mybatis实现数据库操作的两种实现方式,经测试均可运行使用。整体而言注解更加简便,但面对一些复杂查询,可能需要使用到注解方式。

注解方式

pom依赖:

<dependencies><!--连接数据库--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.6</version></dependency></dependencies>

application.yaml配置文件

spring:datasource:url: jdbc:mysql://localhost:3306/mmall_learning?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver

Controller层

@RestController
public class UserController {@Autowiredprivate UserService userService;@RequestMapping(value = "/get_user", method = RequestMethod.GET)public ResponseEntity<User> getUser(@RequestParam(value = "id") String userId) {User user = userService.getUser(userId);return ResponseEntity.status(HttpStatus.OK).body(user);}
}

Service层

@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public User getUser(String userId) {User user = userMapper.findById(userId);return user;}}

Dao层

@Mapper
public interface UserMapper {@Select("SELECT * FROM mmall_user WHERE ID = #{id}")User findById(@Param("id") String id);
}

实体类

@Data
public class User {private Integer id;private String username;private String password;private String email;
}

评析:注解方式非常简便,没有额外的配置工作。

xml方式

xml方式相对来说会需要配置一些路径参数,如果各位想通过这种方式实现数据库操作,可以参照以下目录结构和对应路径配置来实现。

目录结构
在这里插入图片描述

pom依赖:

	<dependencies><!--连接数据库--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.6</version></dependency><!-- Mybatis核心 仅xml方式需要加入该依赖,注解方式不需要 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency></dependencies>

application.yaml配置文件:

spring:datasource:url: jdbc:mysql://localhost:3306/mmall_learning?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver# 配置Mybatis文件位置,告诉Spring Boot你需要扫描的位置
mybatis:mapper-locations: classpath:com.example.demo.dao/*.xml

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.example.demo.mmall.dao.UserMapper"><select id="findById" parameterType="int" resultType="com.example.demo.mmall.bean.User">SELECT * FROM mmall_user WHERE id = #{id}</select>
</mapper>

Controller层

@RestController
public class UserController {@Autowiredprivate UserService userService;@RequestMapping(value = "/get_user", method = RequestMethod.GET)public ResponseEntity<User> getUser(@RequestParam(value = "id") String userId) {User user = userService.getUser(userId);return ResponseEntity.status(HttpStatus.OK).body(user);}
}

Service层

@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public User getUser(String userId) {User user = userMapper.findById(Integer.valueOf(userId));return user;}}

Dao层

@Mapper
public interface UserMapper {User findById(@Param("id") Integer id);
}

实体类

@Data
public class User {private Integer id;private String username;private String password;private String email;
}

评析:XML方式需要做些额外的配置工作,包括新建xml映射文件、在application.yaml中配置扫描路径等。但总体来说,比原来spring+mybatis使用xml方式实现数据库操作的配置已经简便不少了。

测试结果

以上两种方式测试结果均如下所示,可以正常查询到所需数据。
在这里插入图片描述

觉得文章有帮助可以点个赞或关注支持一下哟~


http://www.ppmy.cn/news/1401775.html

相关文章

Linux基础篇:VMware centos7虚拟机网络配置——桥接模式

VMware centos7虚拟机网络配置——桥接模式 1 搞清楚什么是桥接模式 桥接模式允许虚拟机直接连接到物理网络&#xff0c;就像它是物理网络中的一个独立设备一样。在这种模式下&#xff0c;虚拟机将具有与宿主机相同网络中的其他设备相同的网络访问权限。虚拟机将获得一个独立…

结构体类型,结构体变量的创建和初始化 以及结构中存在的内存对齐

一般结构体类型的声明 struct 结构体类型名 { member-list; //成员表列 }variable-list; //变量表列 例如描述⼀个学⽣&#xff1a; struct Stu { char name[20]; //名字 int age; //年龄 char sex[5]; //性别 }&#xff1b; //结构体变量的初始化 int main() { S…

CKS之安全沙箱运行容器:gVisor

目录 一、gVisor介绍 二、gVisor架构 三、gVisor使用前置条件 四、Docker中使用gVisor 五、containerd中使用gVisor 六、Kubernetes结合gVisor使用 一、gVisor介绍 gVisor是Google开源的一种容器沙箱技术&#xff0c;其设计初衷是在提供较高安全性的同时&#xff0c;尽量…

H5小程序视频方案解决方案,实现轻量化视频制作

对于许多企业而言&#xff0c;制作高质量的视频仍然是一个技术门槛高、成本高昂的挑战。针对这一痛点&#xff0c;美摄科技凭借其深厚的技术积累和创新能力&#xff0c;推出了面向企业的H5/小程序视频方案解决方案&#xff0c;为企业提供了一种轻量化、高效、便捷的视频制作方式…

【Python笔记-FastAPI】定时任务实现(APScheduler)

目录 一、常见触发器 (一) DateTrigger (二) IntervalTrigger (三) CronTrigger (四) CombinationTrigger 二、代码示例 (一) task_scheduler.py (二) client.py 三、调用说明 (一) 注册任务 (二) 查询任务 (三) 删除任务 实现功能: 定时任务注册、修改、删除、查…

创业项目开发(持续更新)

最近项目梳理&#xff1a; 一、业务目标 最重要的业务目标就是要能实现自己做事情赚钱。所以有两个维度&#xff0c;第一个维度就是最重要的就是自己做事情。第二个维度才是赚钱。 如果要自己做事情&#xff0c;需要什么样的事情&#xff0c;这个事情的目标是什么&#xff0…

第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-分数

solution1 直观上的分数处理 #include <iostream> using namespace std; int main() {printf("1048575/524288");return 0; }#include<stdio.h> #include<math.h> typedef long long ll; struct fraction{ll up, down; }; ll gcd(ll a, ll b){if…

OpenHarmony error: signature verification failed due to not trusted app source

问题&#xff1a;error: signature verification failed due to not trusted app source 今天在做OpenHarmony App开发&#xff0c;之前一直用的设备A在测试开效果&#xff0c;今天换成了设备B&#xff0c;通过DevEco Studio安装应用程序的时候&#xff0c;就出现错误&#xf…