【学习】SprinBoot 2 + MyBatis-Plus 3 简化 CURD 开发

在昨天的交流会上,进行交流的架构师展示了他开发的 CURD 代码生成工具,随即被同事问,为啥不用 Mybatis-Plus ,好奇之下来学习一波。

在平时开发中,有很多 CURD 代码要写,MP(Mybatis-Plus)大大简化了这个工作,官网列举了 15 种特性,先从第三个特性,也是最关注的特性——强大的 CRUD 操作,开始学习。

使用框架:SpringBoot,Mybatis-Plus

根据 MP 官网完成测试

首先创建该项目库,并创建表User

CREATE TABLE USER(
	id VARCHAR(20),
	NAME VARCHAR(10)
);

插入几条数据

INSERT INTO USER (id,NAME) VALUES("1","一号");
INSERT INTO USER (id,NAME) VALUES("2","二号");
INSERT INTO USER (id,NAME) VALUES("3","三号");

SpringBoot项目的基本使用不再赘述,网上许多 demo

该项目使用 IDEA 开发工具完成,然后配置pom.xml,项目使用 Mysql 数据库,注意添加 Mysql 的驱动


        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.1.0
        
        
        
            mysql
            mysql-connector-java
            runtime
        
        
        
            com.alibaba
            druid
            1.1.12
        
        
        
            org.springframework.boot
            spring-boot-devtools
            provided
            true
        
        
        
            com.alibaba
            fastjson
            1.2.47
        
    

然后配置application.properties连接数据库及设置项目属性,使用 alibaba 的 Druid 连接池,基本配置如下

server.port=8081
#使用Mysql
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/olresume?useSSL=false&characterEncoding=utf-8
spring.datasource.username=damionew
spring.datasource.password=2018$mysql
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#连接池的配置信息
spring.datasource.initialSize=5  
spring.datasource.minIdle=5  
spring.datasource.maxActive=20  
spring.datasource.maxWait=60000  
spring.datasource.timeBetweenEvictionRunsMillis=60000  
spring.datasource.minEvictableIdleTimeMillis=300000  
spring.datasource.validationQuery=SELECT 1 FROM DUAL  
spring.datasource.testWhileIdle=true  
spring.datasource.testOnBorrow=false  
spring.datasource.testOnReturn=false  
spring.datasource.poolPreparedStatements=true  
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20  
spring.datasource.filters=stat,wall,log4j  
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000  

基本配置完成后添加 entity、Controller 、Mapper ,项目结构如下

【学习】SprinBoot 2 + MyBatis-Plus 3 简化 CURD 开发_第1张图片

首先为了使用 Mybatis ,需要在项目启动类添加注解 @MapperScan

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

@SpringBootApplication
// 此处应指定具体 Mapper 包的路径
@MapperScan("com.olresume.admin.mapper")
public class AdminApplication {

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

}

然后添加 User实体类

/**
 *  User 实体类
 */
public class User {
    String id;
    String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

接下来是 mapper 类,注意使用 Mybatis-Plus 需要继承BaseMapper,同时泛型设置为单表的实体类

import com.olresume.admin.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper{

}

然后就可以通过 Controller 进行测试了,以官网的 selectList 为第一例:

import com.alibaba.fastjson.JSONObject;
import com.olresume.admin.entity.User;
import com.olresume.admin.mapper.UserMapper;
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
public class UserController {
    @Autowired
    UserMapper userMapper;

    @ResponseBody
    @RequestMapping("/selectList")
    public String selectList(){
        System.out.println("queryNameById");
        List userList = userMapper.selectList(null);
        JSONObject object = new JSONObject();
        object.put("userList",userList);
        return  object.toJSONString();
    }
}

查看封装的源码,如下,另外此处使用 alibaba 的 fastjson 进行格式转换

    /**
     * 根据 entity 条件,查询全部记录
     *
     * @param queryWrapper 实体对象封装操作类(可以为 null)
     */
    List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper);

网页展示结果如图

以上所有步骤完成并没有写一句 SQL ,全部使用Mybatis-Plus内置接口完成。

下篇文章将记录其他接口的使用,比如根据 ID 查询等

 


问题1:

项目启动时,控制台报错:java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.mybatis.spring.annotation.MapperScan.factoryBean()

解决方法:引入 Maven 依赖错误,原为

        
            com.baomidou
            mybatis-plus
            3.1.0
        

修改为

        
            com.baomidou
            mybatis-plus-boot-starter
            3.1.0
        

 

你可能感兴趣的:(MyBatis-Plus,SpringBoot使用说明书)