若批评不自由,则赞美无意义
关于如何搭建SpringBoot工程以及开启Web功能,
可以查看我的这篇博客:用Spring Initializr快速构建SpringBoot及整合MVC
在我的上篇博客中 -> 史上踩坑最多的SpringBoot整合MyBatis 中介绍了SpringBoot整合MyBatis,那这个MyBatis-Plus又是什么来头?升级版吗?我们先来看一下Mybatis的图标:
再来看一下,MyBatis-Plus的图标:
其实MyBatis-Plus是MyBatis的增强工具,就如MyBatis-Plus官网:https://mp.baomidou.com/ 上说的一样,为简化开发而生,主要特点有:
本文使用的是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');
1.分别在依赖管理文件中导入Web的起步依赖spring-boot-starter-web
,MySQL数据库的连接器依赖mysql-connector-java
以及MyBatis-Plus的起步依赖mybatis-plus-boot-starter
,代码如下:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<scope>runtimescope>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.2.0version>
dependency>
2.在配置文件application.yml
中配置数据源以及SQL日志便于查看,如:
# 配置数据源
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 # 数据库驱动
# 打印MyBatis SQL 日志
logging:
level:
com.guqueyue.dao: debug # 写接口的包名
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 {
// 主键自动递增
@TableId(type = IdType.AUTO)
private Integer id;
private String username;
private String password;
}
其中实体类的类名与实例变量名 和 和 和 数据库中的表名与列名需一一对应,否则我们就需要另行配置,其中@TableName
注解为表名注解,@TableId
注解为主键注解以及@TableField
注解为字段注解…关于注解的详细信息以及MyBatis-Plus的其他注解官方文档上都有,我就不一一赘述 -> 点击即可查看
但是如果主键为自动递增,一定要添加
@TableId(type = IdType.AUTO)
注解,否则你插入数据将会报错并失败;除非你每一次插入数据都去看一下数据库然后手动设置主键的值,但我想应该没人会这么干吧。。。。。。
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层的接口,代码如下:
package com.guqueyue.service.impl;
/**
* @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 IUserService userService;
/**
* 查询用户列表
* @return
*/
@RequestMapping("/list")
public List<User> userList() {
return userService.list();
}
}
9.最后一步,启动应用程序,打开浏览器输入"http://localhost:8080/user/list",浏览器显示:
则说明整合成功!!!我们再来查看一下控制台打印的SQL:
一般来说,MyBatis-Plus自带的足以应付单表的CRUD,而不需要配置一些杂七杂八的配置文件,更别提写什么sql语句。但是如果一旦涉及到多表的增删改查,我们可能就要进行一些额外的配置了。当然,配置的话,MyBatis-Plus和MyBatis差不多,也不会很麻烦,下面开始吧!
1.首先,在src/main/resources目录下新建一个目录mapper,也就是在src/main/resources/mapper目录下配置映射文件UserMapper.xml
,如:
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:/mapper/*Mapper.xml
# 配置别名的扫描
type-aliases-package: com.guqueyue.entity
然后跟MyBatis差不多,可以实现自己自定义的SQL语句了!
又或者说,我们觉得映射接口和映射文件是一对夫妻得在一起,那请往下看!
1.首先,在src/main/java/com/guqueyue/dao目录下也就是dao层配置映射文件UserMapper.xml
,如:
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.然后,因为SpringBoot的约定是在src/mian/resources目录下存放文件,所以我们进行额外的配置以便映射文件起作用。去依赖管理文件pom.xml
中的
标签中进行配置,以便SpringBoot能够扫到映射文件UserMapper.xml
:
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>com/guqueyue/dao/*.xmlinclude>
includes>
resource>
<resource>
<directory>src/main/resourcesdirectory>
resource>
resources>
大功告成!