mybatis回顾
2023-07-25 18:24:13 105浏览
1. 初识MybatisPlus 2
1.1 Mybatis框架回顾
MybatisPlus,从名称上来看,我们就发现,他和Mybatis长得很像,其实MybatisPlus就是Mybatis的孪生兄弟,在学习MybatisPlus之前,我们先来回顾一下Mybatis框架的搭建流程。
什么是Mybatis框架呢,他是一个持久层框架,目的是简化持久层的开发。在这里我们就使用springboot整合Mybatis,实现Mybatis框架的搭建。
2. 工程结构创建 2
我们首先创建一个空的工程
设置项目结构
创建对应的模块
如果 创建出来的项目识别不到maven工程,可以选中pom.xml文件,右键选择添加为maven项目,即可
3. 数据库配置 3
创建数据库,表结构,创建数据库mybatisplus
导入表数据
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');
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接口
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
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
启动
浏览器输入http://localhost:8080/selectAll
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)展开评论
展开评论
您可能感兴趣的博客