springboot整合mybatis-plus搭建环境
在此之前,默认你已经掌握基本的java基础,并且电脑上已经安装了:
- maven3.6.1(官网目前最新版本为3.6.3)
- jdk1.8
- mysql5.7(8.0)
那么我们现在开始搭建springboot项目吧!
在此之前我们还需要
①在idea中安装插件lombok
idea安装lombok
打开IDEA的Setting –> 选择Plugins选项 –> 选择Browse repositories –> 搜索lombok –> 点击安装 –> 安装完成重启IDEA –> 安装成功
②创建数据库lebian并创建表user,这里只给出表的建库语句,创建整个数据库请在sqlyog中自行操作.
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');
上图!
1.新建一个Spring Initializr项目
在idea中file-->new project
创建完成以后,查看file-->settings-->maven是否配置完成.对应maven配置详见https://www.jianshu.com/p/10d73a047884
在lebianzaixian包下面创建controller包,在其下面创建类
HelloWordController.java
,并添加如下代码:
@RestController
public class HelloWordController {
@RequestMapping("/")
public String index() {
return "Hello Spring Boot!";
}
}
快捷键alt+enter快速导入包.
在com.lebian.lebianzaixian
包下运行LebianzaixianApplication
;点击绿色三角按钮,运行该项目出现如图所示
在浏览器中输入 http://localhost:8080/
出现如下页面,即springboot项目创建完成.
有些同学的
LebianzaixianApplication.java
可能不在com.lebian.lebianzaixian
的包下,而是放在其他包(我的在application)下面那么这时候会报404的错比如:
解决办法:
在启动类上添加如下注解:
@ComponentScan(basePackages = {"com.lebian.*"}) //#多个不同的以逗号分割。
@SpringBootApplication
@ComponentScan(basePackages = {"com.lebian.*"}) //#多个不同的以逗号分割。
public class LebianzaixianApplication {
public static void main(String[] args) {
SpringApplication.run(LebianzaixianApplication.class, args);
}
}
这时,就解决了刚才的错误原因.
小贴士:项目文件解释:
- pom文件为基本的依赖管理文件
- resouces 资源文件
- statics 静态资源
- templates 模板资源
- application.properties 配置文件
- LebianzaixianApplication程序的入口。
2.安装mybatis-plus
首先进入MP官网,根据指示进行安装https://mp.baomidou.com/
1.打开快速开始,按照指示在项目pom.xml中添加项目依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/>
</parent>
如上代码在我们刚创建的项目中已经存在,所以不必重复引入,继续向下看.(这里我已经去除重复的依赖了,直接复制到自己项目中即可,另外因为我们用的是mysql,而官网用的是h2 所以数据库的依赖引入可以不用,之前我们在创建项目时已经引入过mysql了)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
2.官网给出的是yml配置,我这里给出application.properties
的配置,需要注意的是 spring.datasource.url中3306端口号后面要对应填写自己的数据库库名(我的是lebian)
#配置api端口号
server.port=8080
server.tomcat.uri-encoding=utf-8
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/lebian?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
#MySQL在高版本需要指明是否进行SSL连接
#指定日期格式,比如yyyy-MM-dd HH:mm:ss,或者具体的格式化类的全限定名
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#北京时区
spring.jackson.time-zone=GMT+8
#置如下配置项指定启动时初始化
spring.mvc.servlet.load-on-startup=100
#将SQL语句打印到控制台
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:
@SpringBootApplication
@ComponentScan(basePackages = {"com.lebian.*"}) //#多个不同的以逗号分割。
@MapperScan("com.lebian.lebianzaixian.mapper")
public class LebianzaixianApplication {
public static void main(String[] args) {
SpringApplication.run(LebianzaixianApplication.class, args);
}
}
这时候发现@MapperScan注解报红,这是因为我们刚才引入mybatis-plus后没有刷新maven,导致jar包还未加载,我们刷新一下项目即可.
3.为了让项目整体变的整洁,我们创建entity
包,并编写实体类 User.java
(此处使用了 Lombok 简化代码)
①idea安装lombok
打开IDEA的Setting –> 选择Plugins选项 –> 选择Browse repositories –> 搜索lombok –> 点击安装 –> 安装完成重启IDEA –> 安装成功
②下面介绍几个我常用的 lombok 注解:
@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
4.创建mapper
包并编写Mapper类 UserMapper.java
public interface UserMapper extends BaseMapper<User> {
}
5.编写测试类
在com.test
文件夹下LebianzaixianApplicationTests.java
中编写:
@Autowired
private UserMapper userMapper;
@Test
public void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
}
注意:这里Assert无论怎么导包,都会出错,是因为Assert用的是junit单元测试类中的,这里缺少这个依赖,所以我们在pom.xml文件中引入这个依赖.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
刷新一下maven,再次导入,我们导入junit包下的Assert;
UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper,所以不填写就是无任何条件
6.好了,接下来我们启动项目!
因为我们在test中编写的,test本身就是测试包,我们可以点击编写方法前面的绿色三角,直接运行
在执行的时候,我们发现出错了,
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
at org.springframework.util.Assert.state(Assert.java:73)
这是因为上边我改了LebianzaixianApplication.java的位置,test包下必须要和上面的路径保持一致才可以对应执行.所以我们在test中的路径和上面保持一致
运行成功后控制台输出的截图:
在我们运行的过程中.控制台输出mybatis-plus字样表示mybatis-plus安装成功