【企业级SpringBoot单体项目模板】 ——整合MySQL和Mybatis-plus 我不是女神ヾ 2024-04-23 16:00 79阅读 0赞 > * ?**作** **者**:[是江迪呀][Link 1] > * ✒️**本文关键词**:`Springboot`、`数据库`、`Git`、`项目` > * ☀️**每日 一言**:`野心是对梦想最好的致敬!` 上回我们已经成功的创建了一个SpringBoot的单体项目并测试启动并了,但是光有个空架子是什么都做不了的,下面我们就集成`MySQL`和`Mybatis-plus`。 ## 一、项目结构 ## ![在这里插入图片描述][dda1cbdb16774f7297bd338d56b98391.png] 项目结构说明: * `common`:顾名思义,公用的、共享的;用于存放一些**常量**、**枚举**。 * `config`:用于存放一些配置文件,比如预加载的类、Bean等。 * `controller`:控制层,用于存放接口。 * `entity`:用于存放实体类(实体类:和数据库字段一一对应的类)。 * `mapper`:用来存放和xml文件对应的mapper接口。 * `model`:用于存放入参和出参的类。 * `service`:用来存放service层和它的实现类。 * `utils`:用来存放工具类。 * `resources/mapper`:用来存放xml文件。 ## 二、添加MySQL数据库 ## ### 2.1 添加驱动连接池依赖 ### <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency> 根据自己的MySQL数据库版本来使用合适的数据库连接驱动。我数据库是5.6版本的所以使用5.1.32版本的驱动。 <!--德鲁伊数据库连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> 这里我们使用德鲁伊的连接池,其实不使用连接池也是可以的,但是强烈建议要使用,连接池的作用如下: * **连接复用:** 通过连接池管理,可以避免频繁地创建和销毁数据库连接,提高连接的复用性,从而减少系统开销。 * **提高性能:** 由于数据库连接已经创建并保持在池中,因此在进行数据库操作时无需再次创建连接,可以大大减少连接创建和销毁的开销,从而提高系统的性能。 * **管理资源:** 连接池可以有效地管理数据库连接,避免资源泄漏和浪费。当连接不再使用时,可以被回收并重新利用,从而提高了资源的利用率。 ### 2.2 数据库和连接池配置 ### spring: datasource: url: jdbc:mysql://localhost:3306/test driver-class-name: com.mysql.jdbc.Driver username: xx password: xx type: com.alibaba.druid.pool.DruidDataSource ## 三、整合Mybatis-plus ## 上面我们添加了MySQL,万事俱备只欠东风,这个东风就是持久层框架——Mybatis-plus。它具有一下的特点: * 只做增强不做改变,引入它不会对现有工厂产生影响,如丝般顺滑。 * 只需简单配置,即可快速进行单表CRUD操作,从而节省大量时间。 * 代码生成、物理分页、性能分析等功能一应俱全。 ### 3.1 添加依赖 ### <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.0</version> </dependency> ### 3.2 配置 ### mybatis-plus: # xml格式的mapper文件路径 mapper-locations: classpath*:mapper/*.xml configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志 ## 四、user-demo ## 现在我们写一个demo来说明,不同的`class`应该存在哪个文件夹下面,以及如何使用mybatis-plus。 ### 4.1 数据库结构 ### CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ### 4.2 实体类User ### @TableName("user") public class user { @TableId private Long id; private String name; private Integer age; public user() { } public user(Long id, String name, Integer age) { this.id = id; this.name = name; this.age = age; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } } ### 4.3 UserMapper和UserMapper.xml ### UserMapper: package com.shijiangdiya.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.catalina.User; @Mapper public interface UserMapper extends BaseMapper<User> { /** * 查询用户信息 * @return */ List<UserVO> queryUserInfo(); } * 可以看到UserMapper继承了BaseMapper,那么我们就可以使用由Mybatis-plus提供的CRUD方法,极大地提高开发效率。这里需要传入BaseMapper的泛型——User(就是实体类),告诉Mybatis-plus我这个是User的Mapper。 * 还需要注解`@Mapper`,后面需要根据这个注解进行扫描。 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.shijiangdiya.mapper.UserMapper"> <select id="queryUserInfo" resultType="com.shijiangdiya.model.user.UserVO"> select name, age from user </select> </mapper> 一定要注意,其中namespace的值就是UserMapper的路径。如何判断二者连接起来了呢? ![在这里插入图片描述][49c50592969e4652a207ba189b47b5d9.png] ### 4.4 UserService和UserServiceImpl ### UserService: package com.shijiangdiya.service; import com.baomidou.mybatisplus.service.IService; import com.shijiangdiya.entity.user.User; import com.shijiangdiya.model.user.UserVO; import java.util.List; public interface UserService extends IService<User> { List<UserVO> queryUserInfo(); } UserServiceImpl: package com.shijiangdiya.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.shijiangdiya.entity.user.User; import com.shijiangdiya.mapper.UserMapper; import com.shijiangdiya.model.user.UserVO; import com.shijiangdiya.service.UserService; import java.util.List; @Service public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService { @Override public List<UserVO> queryUserInfo() { return baseMapper.queryUserInfo(); } } ### 4.5 UserController ### package com.shijiangdiya.controller; import com.shijiangdiya.model.user.UserVO; import com.shijiangdiya.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/users") public List<UserVO> users(){ return userService.queryUserInfo(); } } ## 五、测试 ## ![在这里插入图片描述][f620d5354baf4a29ae9d7754e6a51f7b.png] 我们使用ApiPost测试一下,当然PostMan也是非常可以的呢。 ![在这里插入图片描述][b1e8c3349cf44cba89d222b95d5c64c5.png] [Link 1]: https://blog.csdn.net/qq_42785250?spm=1011.2124.3001.5343 [dda1cbdb16774f7297bd338d56b98391.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/efd4f37a676a4d30822c41252ab94650.png [49c50592969e4652a207ba189b47b5d9.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/8e538eb08e40449897a35ccaf4ea291e.png [f620d5354baf4a29ae9d7754e6a51f7b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/86b50fe698a14396a97d0b44864f59ed.png [b1e8c3349cf44cba89d222b95d5c64c5.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/6bc31990c6df4b66a9658feafd04fb3a.png
相关 【企业级SpringBoot单体项目模板】 —— 全局配置 手把手教你从0到1搭建一个企业级SpringBoot单体项目。 雨点打透心脏的1/2处/ 2024年04月23日 16:00/ 0 赞/ 80 阅读
相关 【企业级SpringBoot单体项目模板】 ——整合MySQL和Mybatis-plus 手把手教你从0到1搭建一个企业级SpringBoot单体项目。 我不是女神ヾ/ 2024年04月23日 16:00/ 0 赞/ 80 阅读
相关 【企业级SpringBoot单体项目模板 】—— 项目代码管理 手把手教你从0到1搭建一个企业级SpringBoot单体项目。 缺乏、安全感/ 2024年04月23日 12:57/ 0 赞/ 93 阅读
相关 企业级SpringBoot单体项目模板 —— 使用 AOP + JWT实现登陆鉴权 手把手教你从0到1搭建一个企业级单体项目。 布满荆棘的人生/ 2024年04月23日 12:57/ 0 赞/ 95 阅读
相关 【企业级SpringBoot单体项目模板 】——Mybatis-plus自动代码生成 手把手教你从0到1搭建一个企业级SpringBoot单体项目。 拼搏现实的明天。/ 2024年04月23日 12:57/ 0 赞/ 91 阅读
相关 【企业级SpringBoot单体项目模板 】—— 一些开发规范 手把手教你从0到1搭建一个企业级SpringBoot单体项目。 末蓝、/ 2024年04月23日 12:56/ 0 赞/ 107 阅读
相关 SpringBoot整合mybatisplus和druid 文章目录 版本介绍 环境准备 导入依赖 application.yml配置 数据 川长思鸟来/ 2024年03月18日 00:22/ 0 赞/ 130 阅读
相关 SpringBoot整合Mybatis和MybatisPlus 目录 一、整合MyBatis操作 1、配置模式 2、注解模式 3、混合模式 二、整合 MyBatis-Plus 完成CRUD 1、什么是MyBatis-Plus 我不是女神ヾ/ 2023年10月11日 20:29/ 0 赞/ 103 阅读
相关 SpringBoot整合Mybatis和MyBatisPlus > SpringBoot的版本是2.2.0 一、整合Mybatis 1-1、引入pom文件 <!-- MySQL 连接驱动依赖 --> <dep 逃离我推掉我的手/ 2022年12月21日 12:56/ 0 赞/ 236 阅读
还没有评论,来说两句吧...