StringBoot+Mybatis-plus实现简单CRUD


一、前言

最近见许多公司使用Mybatis-plus都说好用,就试一试结果是yyds,以下是我搭建框架以及流程步骤,为方便理解框架,注释基本都加上了。对于mybatis-plus的理解,后期会写一份单独的文章,目前有需要的小伙伴可以找度娘,看看别人写的


二、框架搭建步骤

本人使用开发工具IDEA+JDK8,创建简单的maven工程即可

1.pom.xml

数据库连接池用的是德鲁伊,最近看到网上说HikariCP连接池速度超过druid缺点是缺乏实践,下次可以使用试试,对于pom文件中的内容建议大家看一下,对于以后项目搭建有点用,免得出现导入一大堆jar包,出现jar包冲突。

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!--工程结构-->
    <groupId>com.guoke.cn</groupId>
    <!--项目名称-->
    <artifactId>GUOKE</artifactId>
    <!--版本-->
    <version>1.0-SNAPSHOT</version>
    <!--项目名称(随意写)-->
    <name>过客商城项目</name>
    <!--项目介绍-->
    <description>个人开发pc端项目</description>

    <!--(继承)StringBoot父级依赖,只有继承它项目才是StringBoot项目,
    string-boot-stater-parent它用来提供相关的Maven默认依赖,
    使用它以后常用的包以来可以省去version标签,使用默认jar的版本
    父依赖启动器的主要作用是进行版本统一管理-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath/>
    </parent>

    <dependencies>
        <!--string-boot-starter-web依赖启动器的主要作用是提供web开发场景所需的底层依赖
        正因如此,在pom.xml中引入spring-boot-starter-web依赖启动器时,就可以实现web场景开发,
        而不需要额外导入Tomcat服务器以及其他web依赖文件等,当然这些引入依赖文件的版本号
        还是由string-boot-stater-parent父依赖进行统一管理-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--mysql-cinnector-java是mysql的jdbc驱动包,用JDBC连接MySQL数据库时必须使用该jar包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!--lombok能以简单的注解形式来简化java代码,提高开发效率-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--mybatis-plus是mybatis的升级版,使用起来更加简洁,用于数据库操作-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1.tmp</version>
        </dependency>

        <!--springboot单元测试jar-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--Druid数据库连接池组件-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>

    </dependencies>

    <!--spring-boot-maven-plugin插件是将String Boot的应用程序打包成jar包的插件,
    将所有应用启动运行所需的jar包都包含进来,从逻辑上具备了独立运行的条件,当运行mvn-package进行打包后,
    直接使用java-jar的命令就可以直接运行-->
    <build>
        <finalName>guoke</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.application.yml

对于配置文件中的内容也加入了一些注释方便理解,对于初学者可以尝试写的同时多想想为什么这么写。
代码如下(示例):

server:
  port: 8090
spring:
  thymeleaf:
    prefix:
      classpath: /templates
    cache: false
  profilse:
    include: replysentence
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/jiaoyou_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
    username: root
    # 1.配置生成的password
    password: root
    #   Druid数据源配置
    # 初始连接数
    initialSize: 5
    # 最小连接池数量
    minIdle: 10
    # 最大连接池数量
    maxActive: 20
    # 配置获取连接等待超时的时间
    maxWait: 60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    timeBetweenEvictionRunsMillis: 60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    minEvictableIdleTimeMillis: 300000
    # 配置一个连接在池中最大生存的时间,单位是毫秒
    maxEvictableIdleTimeMillis: 900000
    # 配置检测连接是否有效
    validationQuery: SELECT 1 FROM DUAL
    #申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
    testWhileIdle: true
    #配置从连接池获取连接时,是否检查连接有效性,true每次都检查;false不检查。做了这个配置会降低性能。
    testOnBorrow: false
    #配置向连接池归还连接时,是否检查连接有效性,true每次都检查;false不检查。做了这个配置会降低性能。
    testOnReturn: false
    #打开PsCache,并且指定每个连接上PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    #合并多个DruidDatasource的监控数据
    useGlobalDataSourceStat: true
    #通过connectProperties属性来打开mergesql功能罗慢sQL记录
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500;
log:
  root: debug
mybatis-plus:
  # 如果是放在src/main/java目录下 classpath:/com/yourpackage/*/mapper/*Mapper.xml
  # 如果是放在resource目录 classpath:/mapper/*Mapper.xml
  mapper-locations: classpath:/mapper/*Mapper.xml
  configuration:
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

2.pojo(放在bo中)层,Student.java

这个对象与数据库表中的字段一一对应,查询数据用的
代码如下(示例):

package com.guoke.cn.pojo.bo;

import lombok.Data;

/**
* 测试CRUD表对应的实体类
* @author hjd
*/
@Data
public class Student {
   private Integer id;
   private String name;
   private String age;
   }

切记:类名与数据库表名需要完全一致,遵循驼峰命名,好奇的小伙伴可以试试别的名称,yml中打印了生成的sql语句,你可以去看看表名

3.mapper(dao)层StudentMapper.java

这一步是mybatis-plus的灵魂所在,关键点。
代码如下(示例):

package com.guoke.cn.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.guoke.cn.pojo.bo.Student;

/**
* 测试CRUD
* @author hjd
*/
public interface StudentMapper extends BaseMapper<Student> {
}

没错就是这样,不用加别的,因为BaseMapper已经为你封装好了,这就是mybatis-plus的强大,
BaseMapper<这里方的类名也就是你要查询的表名>

4.controller层CrudController.java

写好项目访问路径,注入mapper就好了
代码如下(示例):

package com.guoke.cn.controller;

import com.guoke.cn.mapper.StudentMapper;
import com.guoke.cn.pojo.bo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* 测试mybatis-plusCRUD的使用方法
* @author hjd
*/
@RestController
@RequestMapping("/crud")
public class CrudController {
  @Autowired
  public StudentMapper studentMapper;
  
  /**
   * 根据主键id查询student表
   * 查询id为1的用户信息
   * @return
   */
  
  @RequestMapping("/findById")
  Student findAllUser() {
      Student student = studentMapper.selectById(1);
      return student;
  }

}

selectById()方法就是mybatis-plus提供的根据主键id查询的方法,有小伙伴会问,他在吗知道你要查询那一张表,看看mapper层BaseMapper<这里方的类名也就是你要查询的表名>所以之前说要一一对应
别的方法可以去看看源码,源码也有注释的。
之列举了一个新增。别的一样看看源码中的方法就好,学得浅的小伙伴可以百度mybatis-plus的方法

5.启动类GuokeApplication.java

下面配置启动类就好了。
代码如下(示例):


package com.guoke.cn;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* 测试mybatis-plusCRUD
* @author hjd
*/
@SpringBootApplication
@MapperScan("com.guoke.cn.mapper") //mapper文件的路径,springboot项目启动时会自动扫描这个包
public class GuokeApplication {

   public static void main(String[] args) {
       SpringApplication.run(GuokeApplication.class, args);
   }

}

到这里项目就算完了,一个简单的crud,至于为什么没有service和xml写的sql,这就是mybatis-plus的强大,service你只需要专心写逻辑就好。

7.数据库表student.sql

数据库表给各位了
代码如下(示例):


DROP TABLE IF EXISTS `student`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `student` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) DEFAULT NULL,
 `age` int(11) DEFAULT NULL,
 PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `student`
--

LOCK TABLES `student` WRITE;
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
INSERT INTO `student` VALUES (1,'张三',18),(2,'李四',7),(3,'王二',16),(4,'麻子',99),(5,'坤坤',108);
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
UNLOCK TABLES;

总结

附上项目结构图片:

在这里插入图片描述

最后:对于复杂的sql,mybatis-plus也有对应的处理方式,后期也会专门写一篇文章,如果有问题欢迎各位提出来!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值