MyBatis说明和简单使用MyBatis

MyBatis是一款优秀的持久层框架,简化了数据库操作。文章介绍了MyBatis的基本概念,为何学习,以及在后端中的角色。详细阐述了如何在SpringBoot项目中配置MyBatis,包括添加依赖、配置文件设置、创建Mapper接口和XML文件,以及服务层和服务控制层的交互。
摘要由CSDN通过智能技术生成

1. MyBatis是什么?

MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据中的记录。
简单来说 MyBatis 是更简单完成程序和数据库交互的⼯具,也就是更简的操作和读取数据库⼯具

2. 为什么要学习MyBatis?

对于用后端开发来说,需要通过后端程序操作数据库,即有后端程序连接数据库,MyBatis就是连接数据库的工具,传统方式有JDBC,但是JDBC操作过于繁琐,所以通过MyBatisshi 非常简单的.

后端交互图:

3 MyBatis的框架在后端中的定位及交互

MyBatis 也是⼀个 ORM 框架,ORM(Object Relational Mapping),即对象关系映射。在⾯向对象编程语⾔中,将关系型数据库中的数据与对象建⽴起映射关系,进⽽⾃动的完成数据与对象的互相转换:

  1. 将输⼊数据(即传⼊对象)+SQL 映射成原⽣ SQL
  2. 将结果集映射为返回对象,即输出对象

ORM 把数据库映射为对象:

  • 数据库表(table)–> 类(class)
  • 记录(record,⾏数据)–> 对象(object)
  • 字段(field) --> 对象的属性(attribute)

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

下图为后端交互流程图:

在这里插入图片描述

4. 配置搭建MyBatis

基于SoringBoot.

  1. 添加MyBatis框架
  2. 添加Interface接口文件和.xml文件
  3. 除了上述还需在application.yml/application.properties配置文件中添加链接数据库字符, .xml文件的文件配置等.

4.1 老项目中添加MyBatis

此处添加框架支持时一定要添加添加 MySQL 驱动!!!

<!-- 添加 MyBatis 框架 -->
<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
		<version>2.1.4</version>
</dependency>
<!-- 添加 MySQL 驱动 -->
<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<scope>runtime</scope>
</dependency>

4.2 新项目中直接添加

在这里插入图片描述

4.3 添加application.yml/application-dev.yml配置文件配置以下内容

application.yml为总配置文件,application-dev.yml为开发环境配置文件,需要在总配置文件中选择使用开发环境配置文件还是生产环境配置文件
基于开发环境配置文件,若是配置生产环境则需要改数据库连接操作

application.yml:

#配置开发环境
spring:
  profiles:
    active: dev  #选择环境为开发环境

#配置 mybatis xml的保存路径
mybatis:
  mapper-locations: classpath:mybatis/**Mapper.xml   #此处文件名必须是**Mapper.xml 

application-dev.yml:

#连接数据库							
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncoding=utf8  #jdbc的格式因为后面要调用jdbc
    username: root																								
    password: 263000
    driver-class-name: com.mysql.cj.jdbc.Driver  #jdbc驱动 大于5.x版本的  小于5的com.mysql.jdbc.Driver


# 开启 MyBatis SQL 打印
logging:
  level:
    com:
      example:
        demo: debug   #设置日志打印优先级


#设置打印mybatis的日志实现
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

4.4 在resources目录下面创建一个mybatis文件夹,这个文件夹下创建.xml文件,用于直接操作数据库

注意:此处创建的文件名必须是Mapper.xml(不懂可见配置文件)
下面是一个通过id查询到用户的sql操作,删除select标签,剩下的内容是.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.mapper.UserMapper">  <!-->前面是文件路径,这里面的UserMapper对应mapepr层的接口文件<!-->
<!-->sql语句<!-->
<!-->根据id查询用户信息<!-->  <!-->删除整个查询语句,剩下的内容是.xml文件必须的<!--> 
        <select id="getUserById" resultType="com.example.demo.model.UserInfo">
                select * from userinfo where id=#{id}  <!-->   
        </select>
</mapper>

4.5 在创建工程时就创建好的DemoApplication 启动类同级目录或比DemoApplication低一级目录创建一个mapper目录用于存放接口

这个mapper文件名字会对应到上面.xml的namespace路径,名字需相同.
这个接口必须要加@Mapper注解,比如下面是通过id查询用户的操作. 这个文件里面只是用来声明接口的,不要写业务代码.

package com.example.demo.mapper;


import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserMapper {

    //根据ID查询名字
    public UserInfo getUserById(@Param("id")Integer id); //@Param作用:告诉Integer类型的id在xml里面的名字叫做id
    }

4.6 添加服务层(service),和控制层(controller)进行交互.

服务层代码:

package com.example.demo.servce;

import com.example.demo.mapper.UserMapper;
import com.example.demo.model.UserInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class UserService {
    @Resource
    public UserMapper userMapper;       //通过注入的方式拿到UserMapper对象 
    public UserInfo getUserById(Integer id ){
        return userMapper.getUserById(id);
    }
}

控制层代码:

package com.example.demo.controller;

import com.example.demo.model.UserInfo;
import com.example.demo.servce.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {

    @Autowired
    public UserService userMapper;
    @RequestMapping("get")             
    public UserInfo getUserById(Integer id){
        if(id==null) {
            return null;
        }
        return userMapper.getUserById(id);
    }
}

通过以上步骤,就可以实现前后端交互了,并且是通过MyBatis 来操作数据库.
查询结果:
在这里插入图片描述数据库中数据:
在这里插入图片描述

上面过程的交互流程图如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值