mybatis回顾

奋斗吧
奋斗吧
擅长邻域:未填写

标签: mybatis回顾 Java博客 51CTO博客

2023-07-25 18:24:13 105浏览

mybatis回顾,1. 初识MybatisPlus   21.1  Mybatis框架回顾MybatisPlus,从名称上来看,我们就发现,他和Mybatis长得很像,其实MybatisPlus就是Mybatis的孪生兄弟,在学习MybatisPlus之前,我们先来回顾一下Mybatis框架的搭建流程。什么是Mybatis框架呢,他是一个持久层框架,目的是

1. 初识MybatisPlus   2

1.1  Mybatis框架回顾

MybatisPlus,从名称上来看,我们就发现,他和Mybatis长得很像,其实MybatisPlus就是Mybatis的孪生兄弟,在学习MybatisPlus之前,我们先来回顾一下Mybatis框架的搭建流程。

什么是Mybatis框架呢,他是一个持久层框架,目的是简化持久层的开发。在这里我们就使用springboot整合Mybatis,实现Mybatis框架的搭建。

2. 工程结构创建   2

我们首先创建一个空的工程

mybatis回顾_mybatis

设置项目结构

mybatis回顾_User_02

mybatis回顾_spring_03

创建对应的模块

mybatis回顾_User_04

mybatis回顾_User_05

mybatis回顾_spring_06

如果 创建出来的项目识别不到maven工程,可以选中pom.xml文件,右键选择添加为maven项目,即可

3. 数据库配置   3

创建数据库,表结构,创建数据库mybatisplus

mybatis回顾_User_07

导入表数据

mybatis回顾_mybatis-plus_08

DROP TABLE IF EXISTS user;
CREATE TABLE user(
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

mybatis回顾_User_09

4. mybatis框架回顾   4

4.1  引入相关依赖   4

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.13</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.powernode</groupId>
	<artifactId>course1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>course1</name>
	<description>course1</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!--mysql驱动   4-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.30</version>
		</dependency>

		<!--mybatis起步依赖-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.3</version>
		</dependency>

		<!--web环境起步依赖-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--lombok插件依赖-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>


	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

4.2 实体类User

Lombok可以极大的省略类的代码量,使代码更加的简洁。

Lombok相关常用注解

@Data 注解在类上,提供类的get、set、equals、hashCode、toString等方法

@AllArgsConstructor 注解在类上,提供满参构造

@NoArgsConstructor 注解在类上,提供空参构造

User

package com.powernode.domain;

import lombok.*;

//数据库对应的实体类user   4
@Data  //生成set get方法
@NoArgsConstructor //无参构造
@AllArgsConstructor //有参构造
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

4.3 创建mapper包,编写Mapper接口

mybatis回顾_List_10

UserMapper

@Mapper作用在接口上,扫描到该注解后,会根据接口创建该接口的实现类对象

package com.powernode.mapper;

import com.powernode.domain.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

//持久层接口   5
@Mapper
public interface UserMapper {
    public List<User> selectAll();
}

4.4 编写映射文件   5

mybatis回顾_mybatis_11

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.powernode.mapper.UserMapper">
<!--    namespace对应的接口路径,resultType映射的返回类型  5-->
    <select id="selectAll" resultType="com.powernode.domain.User">
        select * from user
    </select>

</mapper>

4.5 业务层接口

UserService

package com.powernode.service;

import com.powernode.domain.User;

import java.util.List;

//业务层接口
public interface UserService {
    List<User> selectAll();
}

4.6 业务层接口实现类   6

package com.powernode.service.impl;

import com.powernode.domain.User;
import com.powernode.mapper.UserMapper;
import com.powernode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//业务层接口实现类
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    
    @Override
    public List<User> selectAll() {
        return userMapper.selectAll();
    }
}

4.7 控制层   7

package com.powernode.controller;

import com.powernode.domain.User;
import com.powernode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

//控制层  7
@RestController //返回是数据
public class UserController {
    @Autowired
    private UserService userService;


    @RequestMapping("/selectAll")
    public List<User> selectAll(){
        List<User> users = userService.selectAll();
        return users;
    }
}

4.8 配置文件的编写  8

application.yml

spring:
  datasource:
    username: root
    password: lzl
    url: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver

4.9 测试  8

启动

mybatis回顾_mybatis_12

浏览器输入http://localhost:8080/selectAll

mybatis回顾_mybatis_13

5.  Mybatis框架的开发效率问题分析   10

我们来思考一下,Mybatis框架的开发效率怎么样?

开发效率也就是我们使用这款框架开发的速度快不快,是否简单好用易上手。从这个角度思考,每当我们需要编写一个SQL需求的时候,我们需要做几步

【1】Mapper接口提供一个抽象方法

【2】Mapper接口对应的映射配置文件提供对应的标签和SQL语句

【3】在Service中依赖Mapper实例对象

【4】调用Mapper实例中的方法

【5】在Controller中依赖Service实例对象

【6】调用Service实例中的方法

通过上面的发现,对于一个SQL需求,无论是单表还是多表,我们是需要完成如上几步,才能实现SQL需求的开发

但是在开发中,有一些操作是通用逻辑,这些通用逻辑是可以被简化的,例如:

【1】对于dao,是否可以由框架帮我们提供好单表的Mapper抽象方法,和对应的SQL实现,不需要程序员去实现这些

【2】对于service,使用可以有框架直接帮我们提供好一些service的抽象方法,和对应的实现,不需要程序员去实现这些

【3】一些其他的企业开发中所需要的操作

分析到这里我们发现,其实核心框架并没有发生变化,依然还是Mybatis,只不过我们希望对于Mybatis进行一些封装和进化,让它更加的好用,更加的易用。

MybatisPlus它来了,他是Mybatis的一款增强工具。

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695