学习 Mybatis-plus

Mybatis-plus官网

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
可以在不编写任何sql语句的情况下,快速的是实现对单表的crud,批量,逻辑删除,分页等操作

mybatis-plus功能

测试建表示例

基本方法

alt

简单demo实操

新建一个springboot项目 添加以下依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.40</version>
        </dependency>

配置数据源

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3308/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: admin
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

编写Mapper接口

package cn.js.ccit.dmp.mapper;

import cn.js.ccit.dmp.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;

/**
 * @InterfaceName : UserMapper
 * @Description : 编写接口
 * @Author : CodeHaywire
 * @Created at 2022/3/29 16:31
 */
//将一个接口或类注册成持久层对象 解决Autowired的问题
@Repository
public interface UserMapper extends BaseMapper<User> {}

启动类添加东西

package cn.js.ccit.dmp;

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

/**
 * @author CodeHaywire
 */
@SpringBootApplication
//扫描mapper接口所在的包  【加这个】
@MapperScan("cn/js/ccit/dmp/mapper")
public class DmpApplication {

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

}

新建实体类

package cn.js.ccit.dmp.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @ClassName : User
 * @Description : TODO
 * @Author : CodeHaywire
 * @Created at 2022/3/29 16:24
 */

@NoArgsConstructor
@AllArgsConstructor
@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

测试

package cn.js.ccit.dmp;

import cn.js.ccit.dmp.mapper.UserMapper;
import cn.js.ccit.dmp.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

/**
 * @ClassName : MybatisPlusTest
 * @Description : TODO
 * @Author : CodeHaywire
 * @Created at 2022/3/29 16:43
 */
@SpringBootTest
public class MybatisPlusTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void testSelectList(){
        //无查询条件就填null
//        List<User> users = userMapper.selectList(null);
        //遍历数据
//        users.forEach(System.out::println);
//        User user = userMapper.selectById("1");
//        System.out.println(user.getName());
      //添加数据
        User user = new User();
        user.setName("张三");
        user.setAge(23);
        user.setEmail("zhanshan@qq.com");
        int result = userMapper.insert(user);
        System.out.println("result:"+result);
        System.out.println("id:"+user.getId());
    }
}

Console : console

数据库

映射规则


默认情况下,mybatis-plus会把表名转驼峰命名的方式进行匹配,比如库表sys_user对应实体SysUser

主键
实体类主键属性上使用  注解@TableId   默认ASSIGN_ID

 /**
  * 用户ID
  */
    @TableId(value = "user_id",type = IdType.AUTO)
    private Long userId;

AUTO:自增主键,仅在数据库设置主键自增的情况下有效
INPUT:insert之前自己设置主键
NONE:未设置主键类型,
ASSIGN_ID(默认策略): 雪花算法,使用该策略主键类型为Long,String,可以保证分布式系统中主键不重复
ASSIGN_UUID: 唯一 UUID

字段属性
默认情况下mybatis-plus是开启了字段列名驼峰转换

Tip : 启动类加上@MapperScan("com.example.demo.mapper")就已经注入spring容器了mapper接口不需要使用@Component了 参考博客