当前位置:   article > 正文

MyBatis 之一(概念、创建项目、操作模式、交互流程)_mybatis前端交互

mybatis前端交互

1. MyBatis 是什么

  • MyBatis 是一款优秀的持久层框架

  • MyBatis 也是一个 ORM (Object Relational Mapping)框架,即对象关系映射

  • MyBatis 去除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作

  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

MyBatis 是更简单完成程序和数据库交互的工具

2. 为什么学 MyBatis

因为对于 JDBC 来说,整个操作的步骤非常繁琐,所以学习 MyBatis 就是为了帮助我们更方便。更快速的操作数据库

3. 怎么学 MyBatis

学习 MyBatis 两步走

  1. 搭建 MyBatis 开发环境

  1. 使用 MyBatis 模式和语法操作数据库

4. 创建 MyBatis 项目

MyBatis 是 ORM 框架,也就是对象关系映射,在面向对象编程语言中,将关系型数据库中的数据与对象建立起映射关系,从而自动的完成数据与对象的互相转换

  1. 将输入数据(传入对象)+ SQL ——》映射为 原生 SQL

  1. 将结果集 ——》映射为 返回对象(输出对象)

ORM 把数据库映射为对象:

  • 数据库表 ——》 映射为 类

  • 记录(行数据) ——》映射为 对象

  • 字段 ——》 映射为 对象的数据

一般 ORM 框架会将数据库模型的每张表都映射为一个 Java 类,也就是说使用 MyBatis 可以像操作对象一样来操作数据库中的表,可以实现对象和数据库表之间的转换

4.1 创建数据库和数据表

  1. -- 创建数据库
  2. dropdatabaseifexists mycnblog;
  3. createdatabase mycnblog DEFAULTCHARACTERSET utf8mb4;
  4. -- 使⽤数据数据
  5. use mycnblog;
  6. -- 创建表[⽤户表]
  7. droptableifexists userinfo;
  8. createtable userinfo(
  9. id intprimarykeyauto_increment,
  10. username varchar(100) notnull,
  11. passwordvarchar(32) notnull,
  12. photo varchar(500) default'',
  13. createtime datetimedefault now(),
  14. updatetime datetimedefault now(),
  15. `state`intdefault1
  16. ) defaultcharset'utf8mb4';
  17. -- 创建⽂章表
  18. droptableifexists articleinfo;
  19. createtable articleinfo(
  20. id intprimarykeyauto_increment,
  21. title varchar(100) notnull,
  22. content textnotnull,
  23. createtime datetimedefault now(),
  24. updatetime datetimedefault now(),
  25. uid intnotnull,
  26. rcount intnotnulldefault1,
  27. `state`intdefault1
  28. )defaultcharset'utf8mb4';
  29. -- 创建视频表
  30. droptableifexists videoinfo;
  31. createtable videoinfo(
  32. vid intprimarykey,
  33. `title`varchar(250),
  34. `url`varchar(1000),
  35. createtime datetimedefault now(),
  36. updatetime datetimedefault now(),
  37. uid int
  38. )defaultcharset'utf8mb4';
  39. -- 添加⼀个⽤户信息
  40. INSERTINTO`mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`,
  41. `createtime`, `updatetime`, `state`) VALUES
  42. (1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);
  43. -- ⽂章添加测试数据
  44. insertinto articleinfo(title,content,uid)
  45. values('Java','Java正⽂',1);
  46. -- 添加视频
  47. insertinto videoinfo(vid,title,url,uid) values(1,'java title','http://ww
  48. w.baidu.com',1);

4.2 添加 MyBatis 相关依赖

(1)新项目添加 MyBatis 依赖

(2)老项目添加 MyBatis 依赖

4.3 配置数据库的连接信息

  1. # 开发环境配置文件
  2. # 配置数据库连接
  3. spring:
  4. datasource:
  5. url: jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncoding=utf8
  6. username: root
  7. password: 111111
  8. driver-class-name: com.mysql.cj.jdbc.Driver

4.4 配置 MyBatis 的 XML 保存路径

  1. # 配置 mybatis.xml 保存路径
  2. mybatis:
  3. mapper-locations: classpath:mybatis/**Mapper.xml

5. 使用 MyBatis 的操作模式操作数据库

5.1 创建实体类 & 添加 mapper 接口

(1)创建 model 文件夹中 实体类 Userinfo

  1. /**
  2. * model 中的实体类
  3. * @Data中包含变量的 get set toString
  4. */
  5. @Data
  6. publicclassUserinfo {
  7. privateintid;
  8. privateStringusername;
  9. privateStringpassword;
  10. privateStringphoto;
  11. privateStringcreatetime;
  12. privateStringupdatetime;
  13. privateintstate;
  14. }

(2)创建 mapper 文件夹 中的 UserMapper 接口

  1. /**
  2. * 接口加 @Mapper 后,此时这个接口就是 MyBatis interface
  3. * 参数加 @Param 后,就相当于给这个参数改了新的名字
  4. */
  5. @Mapper
  6. publicinterfaceUserMapper {
  7. // 根据用户 id 查询用户
  8. publicUserinfogetUserById(@Param("id") Integerid);
  9. }

5.2 创建 XML 实现上面的接口

在resources 中创建 mybatis 文件夹,在 mybatis 中创建 UserMapper.xml

  1. <?xmlversion="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <!-- namespace 是设置要实现的接口的具体包名 + 类名-->
  4. <mappernamespace="com.example.mybatisdome1.mapper.UserMapper">
  5. <selectid="getUserById"resultType="com.example.mybatisdome1.model.Userinfo">
  6. select * from userinfo where id=${id}
  7. </select>
  8. </mapper>

5.3 添加 Service

创建 service 文件夹,添加服务层 UserService 类

  1. @Service
  2. publicclassUserService {
  3. @Resource
  4. privateUserMapperuserMapper;
  5. publicUserinfogetUserById(Integerid) {
  6. returnuserMapper.getUserById(id);
  7. }
  8. }

5.4 添加 Controller

创建 controller 文件夹,添加控制层 UserController 类

  1. // @RestController = @Controller + @ResponseBody
  2. @RestController
  3. @RequestMapping("/user")
  4. publicclassUserController {
  5. @Autowired
  6. privateUserServiceuserService;
  7. @RequestMapping("/getuserbyid")
  8. publicUserinfogetUserById(Integerid) {
  9. if(id==null) returnnull;
  10. returnuserService.getUserById(id);
  11. }
  12. }

运行程序

5.5 开启 MyBatis SQL 打印

在 application-dev.yml 中

  1. # 开启 MyBatis SQL 打印
  2. logging:
  3. level:
  4. com.example.mybatisdome1: debug
  5. mybatis:
  6. configuration:
  7. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

6. MyBatis 框架交互流程

  1. 前端程序通过 Ajax 访问,Ajax 的信息到达控制器 Controller 这一层

  1. 控制器就会进行参数的校验,校验参数没问题之后,然后接下来就是将数据发送给服务层

  1. 服务层只是组织者(相当于代理,就是管理调用几个接口,进行接口的排序),接下来就是调用 Mapper

  1. 调用两个 Mapper(InterFace 进行声明,XML 进行实现),最终在实现时因为加了 @Mapper,所以 MyBatis 就会将 InterFace 和 xml 进行关联,最终会将方法中具体的执行 SQL,生成为原始的 SQL 语句,并且 MyBatis 会调用 JDBC

  1. MyBatis 是基于 JDBC 的,MyBatis 在执行时会生成 JDBC 的代码和相应 SQL,然后再通过 JDBC 的方式,调用数据库,最终将结果返回给服务层,服务层再将结果返回给控制层,最终再由控制层将结果返回给前端

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/534181
推荐阅读
相关标签
  

闽ICP备14008679号