首页 > 其他分享 >mybatis回顾

mybatis回顾

时间:2023-07-25 14:06:21浏览次数:27  
标签:回顾 springframework Mybatis powernode org mybatis import com

1. 初识MybatisPlus   2

1.1  Mybatis框架回顾

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

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

2. 工程结构创建   2

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

mybatis回顾_spring

设置项目结构

mybatis回顾_mybatis-plus_02

mybatis回顾_mybatis_03

创建对应的模块

mybatis回顾_mybatis_04

mybatis回顾_spring_05

mybatis回顾_spring_06

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

3. 数据库配置   3

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

mybatis回顾_mybatis_07

导入表数据

mybatis回顾_spring_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, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');

mybatis回顾_spring_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回顾_mybatis-plus_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回顾_spring_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-plus_12

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

mybatis回顾_spring_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的一款增强工具。

标签:回顾,springframework,Mybatis,powernode,org,mybatis,import,com
From: https://blog.51cto.com/u_15784725/6844315

相关文章

  • 别错过!这场干货满满的操作系统产业峰会回顾来了
    12月28日操作系统产业峰会2022以线上直播的方式圆满举办作为操作系统产业界的年度盛会本次大会干货满满精彩纷呈!赶紧来一起回顾吧!25位重磅嘉宾出席4大系列重磅内容亮相2022年度openEuler领先商业实践奖项揭晓;中国科学院软件研究所联合多家机构和厂商发布基于openEuler的RISC-V......
  • 使用 MyBatis 相关依赖包(20230725)
    开发SpringBoot应用时使用MyBatis的相关依赖包…… 说明:本文首次发布于2023-7-2510点(北京时间),其中的“最新”是这个时间点最新。 0、序章梳理开发SpringBoot项目时,使用各种MyBatis相关依赖包的版本及其关系。 1、SpringBoot2.7.13默认MyBatisFramewo......
  • Mybatis
    基础知识什么是Mybatis它是一款基于java的半自动ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低。什么是ORM?ObjectRelationMapping,对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系......
  • day01课程回顾
    day02:Java相关概念一、回顾程序:解决问题编写的一系列计算机指令的有序集合计算机语言低级语言机器语言汇编语言高级语言面向过程面向对象:JavaJava发展Java之父:詹姆斯高斯林1996年JavaJDK5.0是Java的分水岭我们用JDK8DOS命令Java特......
  • 活动回顾丨云原生技术实践营广州站回放 & PPT 下载
    7月16日,飞天Clubx云原生技术实践营 -应用和容器实践专场在广州顺利开展。阿里云一线工程师徐靖峰(岛风)、邓深元(纳海),王飞龙(不物)、Apifox高级产品经理,王逍(Sean)、行云创新CEO马洪喜,围绕《SpringCloudGateway在微服务架构下的最佳实践》、《基于API的云原生应用全场景实......
  • Mybatis 多对一处理
    多对一处理:多个学生,对应一个老师对于学生而言,关联...多个学生关联一个老师(多对一)对于老师而言,集合,一个老师,有很多学生(一对多) 测试环境搭建1:导入lombok(不用lombok忽略)2:新建实体类Teacher,Student3:建立Mapper接口4:建立Mapper.xml文件5:在核心配置文件中绑定注册我们的......
  • 周一 mybatis
    数据库连不上改半天,映射文件名写错了找半天,对难受的从MySQLConnector/J8.0.20版本开始,驱动包名发生了变化,需要使用 "com.mysql.cj.jdbc.Driver" 因为.cj错了找半天还好最后解决了 ......
  • Mybatis实战教程
    欢迎大家前来白嫖PDF。下图回复:666本教程致力于最实用mybatis教程,个别图片粘贴有丢失,还有来领取原版。文章目录前言1,什么是Mybatis之JDBC攻城狮1,1,使用idea构建maven工程1,2,引入mysql依赖包1,3,准备数据1,4,jdbc代码回顾1,5,jdbc缺点分析4,MyBatis介绍3,MyBatis整体架构4,快速入门(quicksta......
  • 上周热点回顾(7.17-7.23)
    热点随笔:· 面试官:一个SpringBoot项目能处理多少请求?(小心有坑) (why技术)· 时隔一年后,35岁生日,恰逢720 (李朝强)· 你知道.NET的字符串在内存中是如何存储的吗? (Artech)· 程序员不撰写代码注释和文档的十大理由 (很久8899)· 理解ASP.NETCore-限流(RateLimiting) ......
  • Springboot 整合mybatis 加导出excel
    快速写一个springboot,mybatis的demo,最后用excel导出。第一步,创建一个新maven命名就按自己的来啦第二步,配置pom文件<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version&g......