SpringBoot系列(四)SpringBoot 集成 MybatisPlus 实现简单的CRUD

在写这篇文章之前一直在考虑要不要一个问题,这篇到底要写 tkMybatis 还是要写 MybatisPlus,可以说这是当下对于 Mybatis 基础操作支持的最好的两个开源项目了,纠结的主要原因就是这两个项目都有一些不太尽如人意的地方(其实主要纠结的点在于 tkMybatis 对于 使用过 Spring Data 的人十分友好,它支持大部分的Java Persistence API(JPA)规范, 而 MybatisPlus 则是基于自定义注解来实现的实体和数据库表的映射,但功能十分强大,而且更新比较稳定),但是最终还是选择了 MybatisPlus。

需要引入的包

		
            com.baomidou
            mybatis-plus-boot-starter
            3.2.0
        

        
            org.mybatis
            mybatis
            3.5.2
        

        
            mysql
            mysql-connector-java
        

配置数据源

application.properties 配置文件

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/v_distribution?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

创建数据库表对应实体

Users.java 文件

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;
@TableName("users")
public class Users implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @TableField(value = "username")
    private String username;
    @TableField(value = "password")
    private String password;
    @TableField(value = "avatar")
    private String avatar;
    @TableField(value = "nickname")
    private String nickname;
    @TableField(value = "sex")
    private Boolean sex;
    @TableField(value = "status")
    private Boolean status;
    @TableField(value = "create_time")
    private Date createTime;
	//  getter and setter
}

关于注解:https://mybatis.plus/guide/annotation.html

创建数据层 UserDao.java 接口

重点是要 继承 MybatisPlus 提供的 BaseMapper 接口,接口中的泛型为我们刚刚创建的 数据库实体 User 类,BaseMapper 接口就是提供给我们操作基础增删改查的接口,这里我们自己定义了一个方法,之后会做解释 。


@Repository
public interface UserDao extends BaseMapper {

    List findAllBySex(@Param(value = "sex") Integer sex);
}

在启动类配置Mybatis扫描

这里配置 @MapperScan("pengq.springboot.mybatisplus.dao") 注解,括号中的字符串使用方式和 Mybatis starter 中一致,为 dao 层所在包,这里也支持通配符。


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

@SpringBootApplication
@MapperScan("pengq.springboot.mybatisplus.dao")
public class MybatisPlusApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class,args);
    }
}

万事俱备,让我们一起感受东风

编写测试用例,首先在我们的 src/test/文件夹下创建测试类 MybatisPlusTest.java


import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import pengq.springboot.mybatisplus.MybatisPlusApplication;
import pengq.springboot.mybatisplus.dao.UserDao;
import pengq.springboot.mybatisplus.entity.Users;

import java.util.Date;
import java.util.List;

/**
 * Created by pengq on 2019/9/2 14:37.
 */
@SpringBootTest(classes = MybatisPlusApplication.class)
@RunWith(SpringRunner.class)
public class MybatisPlusTest {
    @Autowired
    UserDao userDao;

    @Test
    public void testPlus(){
        Users userItem = new Users();
        userItem.setNickname("通通大脸猫");
        userItem.setUsername("pengq");
        userItem.setPassword("admin");
        userItem.setAvatar("sada");
        userItem.setSex(true);
        userItem.setStatus(false);
        userItem.setCreateTime(new Date());
        //插入
        int i = userDao.insert(userItem);
        Assert.assertEquals(1, i);

        //通过id查询
        Users user =  userDao.selectById(1);
        Assert.assertNotNull(user);

        //查询所有
        List users = userDao.selectList(null);
        Assert.assertTrue(users != null && !users.isEmpty());
        //自定义查询
        List usersList = userDao.findAllBySex(1);
        Assert.assertNotNull(usersList);
    }
}

这里我们就可以进行 方法的调用,是不是很方便呢?

自定义操作

再完美的工具,总有实现不了我们需求的时候,因此这个时候就需要我们自己动手了。上面看到我们的 UserDao 中有一个自定义的方法 List findAllBySex(@Param(value = "sex") Integer sex);,这里我们只需要 按照常规的方式编写对应的 user-mapper.xml ,然后配置属性 mybatis-plus.mapper-locations=classpath*:/mapper/*.xml就可以了。

关于 mybatis starter 的配置可以看这篇文章:SpringBoot系列(二)spring boot 集成 Mybatis

关于MybatisPlus 更多的使用方式,后续我会开个单章进行分享,这里不再赘述。

MybatisPlus集成项目地址:SpringBoot 集成 MybatisPlus

你可能感兴趣的:(spring,boot)