Mybatis-plus01--快速开始
前言
在编写Java开发过程中,尤其是CRUD开发,我们会发现大部分事件都在编写Java持久层的增删改查上了,并且配置mybatis的mapper文件也是一件麻烦的事。如果你也有这样的烦劳,看来就可以认识一下我们的新朋友mybatis-plus了。
MyBatis-Plus 是一个 Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特点:无侵入,只增强mybatis,不会破坏原来的已经由mybatis构建的项目;CRUD,内置CRUD方法,不再需要自己编写单表CRUD功能;Lambda表达式以及各种插件。
快速入门
实验环境需要在JetBrins Idea上完成,请事先下载好这款编辑器
1.构建一个spring Boot项目
打开idea,新建项目为SpringBoot
JDK最好使用17以上,默认打jar包就好,然后第二个勾选依赖,先只勾选一个spring Web就好,后面慢慢的导入也是一样的,由于springboot的自动装配,自己手写导入依赖很少
2.引入相关的依赖
由于测试的是数据库方面,那么映入的依赖肯定要包括数据库连接器,我使用的是mysql,故而需要导入mysql-connector-java
接着导入mybatis-plus,导入mybatis-plus需要注意不要同时导入mybatis的依赖,这会导致依赖冲突,一个mybatis-plus就可以解决了:mybatis-plus-spring-boot3-starter
然后导入一个方便写实体类的插件Lombok,也是老朋友了
全部的准备依赖如下:
<!-- mysql驱动器--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.31</version> </dependency> <!-- lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!-- mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId> <version>3.5.10.1</version> </dependency>
3.写application.properties文件:连接配置
一般MySQL的使用版本一共有两个,一个是5版本开头的用户,这类用户配置需要配置登录用户名,密码,连接地址以及连接驱动,而8版本开头的用户则是需要多配置一个时区
5版本的连接驱动:com.mysql.jdbc.Driver ;8版本的驱动:com.mysql.cj.jdbc.Driver;由于8版本向下兼容,故而5版本的mysql也可以使用8版本的连接驱动
5版本的配置如下:
spring.datasource.username=root spring.datasource.password=123456 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis-plus?useUnicode=true&characterEncoding=utf-8 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
8版本的配置多了一个时区配置:
spring.datasource.username=root spring.datasource.password=123456 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis-plus?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
4.初始化数据库和一张数据库表用于测试mybatis-plus
创建数据库命令:
create database mybatis_plus;
使用此数据库,并且创建一张数据库表:
use mybatis_plus;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`
(
id BIGINT NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT 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');
查看数据库表中的内容,是否完成插入:
select * from user;
5.编写实体类,用于映射数据库表的字段
User实体类:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Accessors(chain=true)
public class User {
private Integer id;
private String name;
private int age;
private String email;
}
6.编写Dao接口,或者持久层接口
由于是操作User的接口,故而推荐定义为UserDao,并且需要在此接口之下积乘BaseMapper父类,这个父类就是mybatis-plus写的,实现此父类后会有很多CRUD方法,直接调用就可以操作数据库了
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.cqust.testmybatisplus.pojo.User; public interface UserDao extends BaseMapper<User> { }
注意:当我们继承BaseMapper之后,并且传入一个操作的泛型,也就是要操作的实体类给它,我们就已经将此实体类对应的数据库表的CRUD方法写好了。
由于mybatis-plus可以自动取别名,传入User,那么它就会默认操作的表为user表
完成接口继承之后,需要在启动器中使用MapperScan扫描dao下面的包,用于注入到spring容器中,一定要定位到持久层的包也就是dao
@MapperScan("org.cqust.testmybatisplus.dao")
@SpringBootApplication
public class TestMybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(TestMybatisPlusApplication.class, args);
}
}
7.测试BaseMapper中的方法
简单测试一个查询全部信息的程序:
@Autowired private UserDao userDao; @Test public void testSelect(){ List<User> users = userDao.selectList(null); users.forEach(System.out::println); }
selectList需要传入条件选择器,为null就是无条件查询,也就是全表查询:
最后查询出的结果就是创建数据库表的那些数据:
8.配置log日志,方便调试mybatis-plus
默认的控制台只会输出打印结果,我们并不知道,究竟执行了什么sql语句,这里推荐在application.properties文件中打开log日志功能,方便调试
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
再次运行测试程序:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2023-03-06 RestFul风格
2023-03-06 Controller配置方式及RequestMapping说明