Spring Boot数据访问之Mybatis的示例分析
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍Spring Boot数据访问之Mybatis的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、什么是MyBatis支持定制化SQL、存储过程以及高级
千家信息网最后更新 2025年01月31日Spring Boot数据访问之Mybatis的示例分析6.创建DepartmentController
3. 插入一条User数据
9.在Swagger上测试
这篇文章主要介绍Spring Boot数据访问之Mybatis的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、什么是MyBatis
支持定制化SQL、存储过程以及高级映射的优秀的持久层框架 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 可以对配置和原生Map使用简单的 XML 或注解 将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录 数据库、数据源、数据库连接池、JDBC、JDBC实现是什么关系?
JDBC:Java和关系型数据库的桥梁,是一个规范,不是实现。不同类型的数据库需要有自己的JDBC实现
数据源:包含数据库连接池,连接池管理。常见的有C3P0、HikariDataSoiurce、Druid等
连接池:预先创建一些数据库连接,放到连接池里面,用的时候从连接池里面取,用完后放回连接池
连接池管理:创建数据库连接,管理数据库连接
JDBC实现:MySQL JDBC实现、Oracle JDBC实现等其他实现
MyBatis对JDBC进行了封装
二、整合MyBatis
我们基于之前创建的项目spring-boot-06-data-druid 来创建spring-boot-07-data-mybatis项目
1)引入MyBatis依赖
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1
2)引入其他依赖
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
runtime
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
com.alibaba
druid
1.1.21
3)依赖图
三、用注解方式使用 MyBatis
1.准备创建department表的脚本
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`department_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2.application.yml 自动执行脚本
initialization-mode: always
schema:
- classpath:department.sql
执行一次后,注释 initialization-mode
# initialization-mode: always
3.创建department 实体类
package com.jackson0714.springboot.entity;
public class Department {
private Long id;
private String departmentName;
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public String getDepartmentName() {
return departmentName;
}
}
4.创建Mapper映射类,并将SQL注解到方法上
增删改查,你要的都在这里:
@Mapper
public interface DepartmentMapper {
@Select("select * from department")
List
@Select("select * from department where id=#{id}")
Department getDepartmentById(Long id);
@Delete("delete from department where id=#{id}")
int deleteDepartment(Long id);
@Insert("insert into department(department_name) values(#{departmentName})")
int createDepartment(String departmentName);
@Update("update department set department_name=#{departmentName} where id=#{id}")
int updateDepartmentById(Long id, String departmentName);
}
5.创建MyBatis 配置类
增加自定义配置:如果表的字段名有下划线格式的,转为驼峰命名格式
@org.springframework.context.annotation.Configurationpublic class MyBatisConfig { @Bean public ConfigurationCustomizer configurationCustomizer() { return new ConfigurationCustomizer() { @Override public void customize(Configuration configuration) { // 如果表的字段名有下划线格式的,转为驼峰命名格式 configuration.setMapUnderscoreToCamelCase(true); } }; }}
6.创建DepartmentController
@Api(value = "DepartmentController", description = "部门controller")
@RequestMapping("/v1/client")
@RestController
public class DepartmentController {
@Autowired
DepartmentMapper departmentMapper;
@ApiOperation(value = "1.查询所有部门")
@GetMapping("/dept/getAllDepartment")
public List
return departmentMapper.getAllDepartment();
}
@ApiOperation(value = "2.根据id查询某个部门")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "需要查询的部门id")
})
@GetMapping("/dept/{id}")
public Department getDepartmentById(@PathVariable Long id) {
return departmentMapper.getDepartmentById(id);
}
@ApiOperation(value = "3.新增部门")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "部门名称")
})
@PostMapping("/dept/create")
public int createDepartment(@RequestParam String name) {
return departmentMapper.createDepartment(name);
}
@ApiOperation(value = "4.根据id删除部门")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "需要删除的部门id")
})
@PostMapping("/dept/delete")
public int deleteDepartment(@RequestParam Long id) {
return departmentMapper.deleteDepartment(id);
}
@ApiOperation(value = "5.根据id更新部门名称")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "需要更新的部门id"),
@ApiImplicitParam(name = "name", value = "需要更新的部门名称")
})
@PostMapping("/dept/update")
public int updateDepartmentById(@RequestParam Long id, @RequestParam String name) {
return departmentMapper.updateDepartmentById(id, name);
}
}
使用Swagger来测试
四、用配置方式使用 MyBatis
1. 文件结构
2. 创建user表的脚本
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_name` varchar(255) COLLATE utf8mb4_bin NOT NULL COMMENT '用户名',
`password` varchar(255) COLLATE utf8mb4_bin NOT NULL,
`salt` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '随机盐',
`nickName` varchar(255) COLLATE utf8mb4_bin NOT NULL COMMENT '用户名',
`phone` varchar(20) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '手机号',
`avatar` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '头像',
`mini_openId` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '小程序OpenId',
`lock_flag` char(1) COLLATE utf8mb4_bin DEFAULT '0' COMMENT '0-正常,9-锁定',
`del_flag` char(1) COLLATE utf8mb4_bin DEFAULT '0' COMMENT '0-正常,1-删除',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`user_id`),
KEY `user_wx_openid` (`mini_openId`),
KEY `user_idx1_username` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='用户表';
3. 插入一条User数据
INSERT INTO user(user_name, password, nick_name, phone) values ("jackson0714", "123", "悟空聊架构", "123456")
4. 创建User实体类
package com.jackson0714.springboot.entity;
import lombok.Data;
import java.sql.Timestamp;
@Data
public class User {
private Long userId;
private String userName;
private String password;
private String salt;
private String nickName;
private String phone;
private String avatar;
private String miniOpenId;
private String openId;
private Boolean lockFlag;
private Boolean delFlag;
private Timestamp createTime;
private Timestamp updateTime;
}
需要安装Lombok插件
需要引入Lombok依赖
org.projectlombok
lombok
1.18.12
provided
5. 创建调用User方法的 UserMapper 接口
// @Mapper 或MapperScan 将接口扫描装配到装配容器中
public interface UserMapper {
User getUserById(Long userId);
}
6. 创建接口方法与SQL脚本的映射文件
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
7. 创建UserController文件
@Api(value = "UserController", description = "用户controller")
@RequestMapping("/v1/client")
@RestController
public class UserController {
@Autowired
UserMapper userMapper;
@ApiOperation(value = "1.根据id查询某个用户")
@ApiImplicitParams({
@ApiImplicitParam(name = "需要查询的用户userId", value = "需要查询的用户userId")
})
@GetMapping("/emp/{userId}")
public User getUser(@PathVariable("userId") Long userId) {
return userMapper.getUserById(userId);
}
}
8. 添加MapperScan注解
@MapperScan(value = "com.jackson0714.springboot.mapper")@SpringBootApplicationpublic class Springboot07DataMybatisApplication { public static void main(String[] args) { SpringApplication.run(Springboot07DataMybatisApplication.class, args); }}
9.在Swagger上测试
10. 查看Druid监控
代码下载:
https://github.com/Jackson0714/study-spring-boot.git
以上是"Spring Boot数据访问之Mybatis的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
数据
部门
数据库
用户
查询
接口
格式
注解
脚本
更新
配置
名称
文件
方法
管理
示例
分析
下划线
代码
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
java查询数据库乱码
如何保持服务器优质
手机如何搭建代理服务器上网
上海一站式软件开发代理价钱
儒藏数据库
上海定制软件开发公司
国际体验服服务器选择什么
上海电商软件开发价位
软件开发行业人员
数据库基础与应用考试
银行软件开发招投标方式
金属服务器和数据中心
安徽刀片服务器虚拟主机
2001年ibm服务器
惠普服务器格式化硬盘
浙江益祥互联网科技有限公司
银行国家网络安全宣传短视频制作
pi数据库计算点引用常数
5evac安全服务器启动项
软件开发需求分析简要说明
广东软件开发者能赚多少钱
中国isc网络安全大会
美团网络技术公司企业介绍
阿南网络技术是什么
大华服务器配置系统账号密码
河南省经贸网络技术中心
英雄联盟国际服服务器选择
生产服务器什么意思
google地球如何链接数据库
华为手机如何设置网络安全