企业级SpringBoot单体项目模板 ——整合MySQL和Mybatis-plus

  •           :是江迪呀
  • ✒️本文关键词Springboot数据库Git项目
  • ☀️每日   一言野心是对梦想最好的致敬!

上回我们已经成功的创建了一个SpringBoot的单体项目并测试启动并了,但是光有个空架子是什么都做不了的,下面我们就集成MySQLMybatis-plus

一、项目结构

企业级SpringBoot单体项目模板 ——整合MySQL和Mybatis-plus_第1张图片
项目结构说明:

  • common:顾名思义,公用的、共享的;用于存放一些常量枚举
  • config:用于存放一些配置文件,比如预加载的类、Bean等。
  • controller:控制层,用于存放接口。
  • entity:用于存放实体类(实体类:和数据库字段一一对应的类)。
  • mapper:用来存放和xml文件对应的mapper接口。
  • model:用于存放入参和出参的类。
  • service:用来存放service层和它的实现类。
  • utils:用来存放工具类。
  • resources/mapper:用来存放xml文件。

二、添加MySQL数据库

2.1 添加驱动连接池依赖

 <dependency>
   <groupId>mysqlgroupId>
     <artifactId>mysql-connector-javaartifactId>
     <version>5.1.32version>
 dependency>

根据自己的MySQL数据库版本来使用合适的数据库连接驱动。我数据库是5.6版本的所以使用5.1.32版本的驱动。


<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>druidartifactId>
    <version>1.1.21version>
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.baomidougroupId>
      <artifactId>mybatis-plus-boot-starterartifactId>
      <version>3.5.0version>
  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.slf4j.Slf4jImpl

四、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:


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的路径。如何判断二者连接起来了呢?
企业级SpringBoot单体项目模板 ——整合MySQL和Mybatis-plus_第2张图片

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();
    }
}

五、测试

企业级SpringBoot单体项目模板 ——整合MySQL和Mybatis-plus_第3张图片
我们使用ApiPost测试一下,当然PostMan也是非常可以的呢。
企业级SpringBoot单体项目模板 ——整合MySQL和Mybatis-plus_第4张图片

你可能感兴趣的:(项目搭建,spring,boot,mysql,mybatis)