若批评不自由,则赞美无意义
前言
关于如何搭建SpringBoot工程以及开启Web功能,
可以查看我的这篇博客:用Spring Initializr快速构建SpringBoot及整合MVC
Mybatis-Plus
在我的上篇博客中 -> 史上踩坑最多的SpringBoot整合MyBatis 中介绍了SpringBoot整合MyBatis,那这个MyBatis-Plus又是什么来头?升级版吗?我们先来看一下Mybatis的图标:
再来看一下,MyBatis-Plus的图标:
其实MyBatis-Plus是MyBatis的增强工具,就如MyBatis-Plus官网:https://mp.baomidou.com/ 上说的一样,为简化开发而生,主要特点有:
- 润物无声,在MyBatis的基础上只做增强而不做改变,引入没有其他影响。
- 效率至上,快速进行CRUD操作,从而节省大量时间。
- 丰富功能,热加载、代码生成、分页、性能分析等功能一应俱全。
数据库部分
本文使用的是MySQL数据库,需要读者自行下载
在数据库中"mydb"中创建一张表"users",建表语句如下:
create table users # 创建表users
( # 整型 不为空 自动增长
id int not null auto_increment,
username varchar(50), # 可变字符串,最长为50
password varchar(50), # 可变字符串,最长为50
primary key (id) # 设置id为主键
)
往"users"表中插入两条数据,sql语句如下:
insert into users(username, password) values('古阙月', '123456');
insert into users(username, password) values('月阙古', '654321');
最后,"users"表中数据为:
开整
1.分别在依赖管理文件中导入Web的起步依赖spring-boot-starter-web
,MySQL数据库的连接器依赖mysql-connector-java
以及MyBatis-Plus的起步依赖mybatis-plus-boot-starter
,代码如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope> <!-- 作用域:表示运行时才生效-->
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
2.在配置文件application.yml
中配置数据源,如:
# 配置数据源
spring:
datasource:
# 数据库路径jdbc:mysql://localhost:3306/mydb 的缩写,并配置时区
url: jdbc:mysql:///mydb?serverTimezone=GMT%2B8
username: root # 用户名
password: 123456 # 密码
driver-class-name: com.mysql.cj.jdbc.Driver # 数据库驱动
3.创建实体类,如:
package com.guqueyue.entity;
/**
* @author guqueyue
* @Date 2020/4/12
**/
//lombok插件的注解
@Data // 若未使用lombok插件,请自行生成getter、setter以及toString方法
@AllArgsConstructor // 若未使用lombok插件,请自行生成有参构造方法
@NoArgsConstructor // 若未使用lombok插件,请自行生成无参构造方法
@Accessors(chain = true) // 开启链式编程
@TableName("users") // 因为实体类和表名不一致, 需要进行配置
public class User implements Serializable {
private Integer id;
private String username;
private String password;
}
其中实体类的类名与实例变量名
数据库中的表名与列名需一一对应,否则我们就需要另行配置,其中@TableName
注解为表名注解,@TableId
注解为主键注解以及@TableField
注解为字段注解…关于注解的详细信息以及MyBatis-Plus的其他注解官方文档上都有,我就不一一赘述 -> 点击即可查看
4.创建DAO层的映射接口,并继承MyBatis-Plus的公共接口,代码如下:
package com.guqueyue.dao;
/**
* @author guqueyue
* @Date 2020/4/12
* 映射接口UserMapper
**/
public interface UserMapper extends BaseMapper<User> {
}
5.在启动类上使用@MapperScan
,扫描映射接口,如:
package com.guqueyue.hello_guqueyue;
@SpringBootApplication(scanBasePackages = "com.guqueyue")
@MapperScan("com.guqueyue.dao")
public class HelloGuqueyueApplication {
public static void main(String[] args) {
SpringApplication.run(HelloGuqueyueApplication.class, args);
}
}
6.创建Service层的接口,并继承MyBatis-Plus的公共接口,如:
package com.guqueyue.service;
/**
* @author guqueyue
* @Date 2020/4/12
**/
public interface IUserService extends IService<User> {
}
7.创建Service层的实现类,添加@Service
注解,并继承MyBatis-Plus的公共接口以及实现Service层的接口,代码如下:
/**
* @author guqueyue
* @Date 2020/4/12
**/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
}
8.创建Controller层,使用@Autowired
注解注入Service层的实现类对象,代码如下:
package com.guqueyue.controller;
/**
* @author guqueyue
* @Date 2020/4/12
**/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserServiceImpl userService;
/**
* 查询用户列表
* @return
*/
@RequestMapping("/list")
public List<User> userList() {
return userService.list();
}
}
9.最后一步,启动应用程序,打开浏览器输入"http://localhost:8080/user/list",浏览器显示:
说明整合成功!!!
扩展
一般来说,MyBatis-Plus自带的足以应付单表的CRUD,而不需要配置一些杂七杂八的配置文件,更别提写什么sql语句。但是如果一旦涉及到多表的增删改查,我们可能就要进行一些额外的配置了。当然,配置的话,MyBatis-Plus和MyBatis差不多,也不会很麻烦,下面开始吧!
1.首先,在src/main/java/com/guqueyue/dao目录下也就是dao层配置映射文件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.guqueyue.dao.UserMapper">
</mapper>
2.其次,在配置文件application.yml中,配置映射文件的扫描,如:
mybatis-plus:
# 配置映射文件的扫描
mapper-locations: classpath:com/guqueyue/dao/*.xml
# 配置别名的扫描
type-aliases-package: com.guqueyue.entity
3.然后,去依赖管理文件pom.xml
中的中进行配置,以便SpringBoot能够扫到映射文件UserMapper.xml
:
<resources>
<!-- 使SpringBoot扫到映射文件 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>com/guqueyue/dao/*.xml</include>
</includes>
</resource>
<!-- 防止配置之后出现不扫resources的bug -->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
大功告成!
转载:https://blog.csdn.net/Qizhi_Hu/article/details/105476327