坚持学习第一天 SpringBoot 2.x整合MyBatis-Plus 3.1.1
**一直想要尝试自己写写笔记,搭搭框架,搞一套从0到1从头到尾的知识体系,却总是各种原因没有怎么开始,想起室友贵哥说的,多学多写,今天开始尝试看看,最近朋友圈"各种坚持XXX多少天",我也来试试!!**
本文主要涉及:MySQL 5.x,SpringBoot 2.x,MyBatis-Plus 3.1.1,Maven 3.x等
1.理论简介
MyBatis及MyBatis-Plus简介
- 【MyBatis简介】MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
- 【MyBatis-plus简介】MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
SpringBoot简介
- Spring Boot让您更简单的创建基于Spring的独立的,生产级的可运行“应用程序”。 对于Spring平台和第三方库,我们采取一种“强制性”的观点,以至于您可以更加轻松的开始使用。 大部分Spring Boot应用程序只需要一点点Spring的配置即可。
IDEA开发工具简介
- IDEA,全称 IntelliJ IDEA,是 Java 语言的集成开发环境,IDEA 在业界被公认为是最好的 java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。
Maven简介
Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目
2.软件安装
系统说明:window 10,Java,Apache Maven 3.5.0,SpringBoot 2.1.5(Idea默认) ,H2(一个开源的、纯java实现的关系数据库),MyBatis-plus 3.1.1
3.项目搭建
- 启动IDEA,选择:File->new->Project,在弹窗中选择***Spring Initializr***,如下图:
基本上都默认选中,点击***Next***
2.根据个人习惯和规范输入***Group,Artifact***设置**Package等,第一次搭建可以直接默认,点击Next***,如下图:
3.设置依赖包,在弹窗中可以根据需要设置依赖包,这里我暂时只选择:Core->Lombok(使用Lombok记得要安装Idea插件
Web->Web
SQL->H2
选择好依赖包后点击***Next***
4.确认项目名称及路径无误,点击***Finish***
因为第一次写,所以赘述了一下项目创建过程!SpringBoot的基础知识本文不作记录若有需要请参考:SpringBoot知识
创建完成后,项目基本结构如下图:
- 引入MyBatis-Plus,打开项目maven配置文件pom.xml,添加MyBatis-Plus依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
6.配置myabtis-plus,修改默认的application.properties为application.yml(个人习惯使用yml配置),添加数据库的配置与mybatis-plus配置
7.然后创建对应得model(我放在了domain目录),Mapper,service,及Controller具体见代码,
- User.java
package com.cooper.module.user.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 用户信息
*/
@Data
public class User {
@TableId(value = "id",type = IdType.ID_WORKER)
private Long id;
@TableField("name")
private String name;
@TableField("age")
private Integer age;
@TableField("email")
private String email;
@TableField("create_time")
private LocalDateTime createTime;
}
- UserMapper.java
package com.cooper.module.user.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cooper.module.user.domain.User;
public interface UserMapper extends BaseMapper<User> {
}
- IUserService.java 和 UserServieImpl.java
package com.cooper.module.user.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cooper.module.user.domain.User;
public interface IUserService extends IService<User> {
}
/** ------------------------------------------------------------------------------------------**/
package com.cooper.module.user.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cooper.module.user.domain.User;
import com.cooper.module.user.mapper.UserMapper;
import com.cooper.module.user.service.IUserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
}
- UserController.java
package com.cooper.module.user.controller;
import com.cooper.module.user.domain.User;
import com.cooper.module.user.service.IUserService;
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 java.util.List;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("/list")
@ResponseBody
public List<User> listOfUser(){
return userService.list();
}
}
太晚了不写明细了,后续完善。
从上面我们可以MP带来了好处就是基本的单表操作是可以不写任何SQL与Dao层代码的,甚至如果不涉及复杂业务的连service也省了【有人可能就会说JPA不就是这样的吗?其实我不是很清楚,JPA用的不多,个人只是觉得mybatis更灵活点,而mp正如它的描述,只做增强不做改变,为简化开发、提高效率而生,解放你的双手。
当然他们肯定是各有优势的,根据自己的需求选择,适合自己的才是最好的】
启动后可以查看SpringBoot及MybatisPlus对应日志版本信息;
附上简单查询所有接口效果:
第一次写诸多不完善的地方望见谅,主要做为学习笔记记录,最后附上项目代码地址
以上就是作为一个JAVA菜鸟的第一次学习笔记总结了,若有缘人看到欢迎批评指正,相互学习,相互进步!