mmybatis-plus入门

一、springboot环境搭建

1.1 pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springbootmp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springbootmp</name>
    <description>springbootmp</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</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>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

主要依赖

     <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>
            <scope>runtime</scope>
        </dependency>
             <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
 

1.2 appliaction.yml

# 配置数据源
spring:
  datasource:
    name: test
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
# 配置日志
logging:
  level:
    root: warn
    com.dyz.mybatisplus.dao: trace
  pattern:
    console: '%p%m%n'
# Mybatis-plus配置内容
mybatis-plus:
  #扫描resource目录下的mapper文件夹中的xml文件(多模块项目用classpath*)
  mapper-locations: classpath:/mapper/*.xml
  configuration:
    use-column-label: true
  #全局类名
  type-aliases-package: com.dyz.mybatisplus.entity
  global-config:
    db-config:
      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
      id-type: uuid
      #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
      field-strategy: not_null
      #驼峰下划线转换
      table-underline: true
      #逻辑删除配置
      logic-delete-value: 0
      logic-not-delete-value: 1

1.3 mysql.sql

#创建用户表
CREATE TABLE user (
    id BIGINT(20) PRIMARY KEY NOT NULL COMMENT '主键',
    name VARCHAR(30) DEFAULT NULL COMMENT '姓名',
    age INT(11) DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
    manager_id BIGINT(20) DEFAULT NULL COMMENT '直属上级id',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    CONSTRAINT manager_fk FOREIGN KEY (manager_id)
        REFERENCES user (id)
)  ENGINE=INNODB CHARSET=UTF8;

#初始化数据:
INSERT INTO user (id, name, age, email, manager_id
	, create_time)
VALUES (1087982257332887553, '大boss', 40, 'boss@baomidou.com', NULL
		, '2019-01-11 14:20:20'),
	(1088248166370832385, '王天风', 25, 'wtf@baomidou.com', 1087982257332887553
		, '2019-02-05 11:12:22'),
	(1088250446457389058, '李艺伟', 28, 'lyw@baomidou.com', 1088248166370832385
		, '2019-02-14 08:31:16'),
	(1094590409767661570, '张雨琪', 31, 'zjq@baomidou.com', 1088248166370832385
		, '2019-01-14 09:15:15'),
	(1094592041087729666, '刘红雨', 32, 'lhm@baomidou.com', 1088248166370832385
		, '2019-01-14 09:48:16');

二、测试入门

2.1 实体类

package com.oneboi.springbootmp.entity;

import lombok.Data;

import java.time.LocalDateTime;

@Data
public class User {
    //主键
    private long id;
    //姓名
    private  String name;
    //年龄
    private  Integer age;
    //邮箱
    private  String email;
    //直属上级
    private  Long managerId;
    //创建时间
    private LocalDateTime createTime;


}

2.2 接口UserMapper

package com.oneboi.springbootmp.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.oneboi.springbootmp.entity.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper  extends BaseMapper<User> {

}

2.3 测试查询

package com.oneboi.springbootmp;


import com.oneboi.springbootmp.dao.UserMapper;
import com.oneboi.springbootmp.entity.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;
import java.util.function.Consumer;

@SpringBootTest
class SpringbootmpApplicationTests {

    @Test
    void contextLoads() {
    }
    @Autowired
   private UserMapper userMapper;

    @Test
    public  void selectUser(){
        List<User> users = userMapper.selectList(null);

        //https://blog.csdn.net/qfzhaohan/article/details/121542175
//        users.forEach(new Consumer<Object>() {
//            @Override
//            public void accept(Object o) {
//                System.out.println(o);
//            }
//        });
//        users.forEach((o)->{
//            System.out.println(o);
//        });
        users.forEach(System.out::println);

    }
}

三 、新增

SSM 传统编程模式

  1. 接口中写抽象方法
  2. xml或注解写SQL
  3. Service中调用接口
  4. Controller中调用

3.1 insert(T)

在这里插入图片描述

传入 实体对象 ,返回影响的行数

在这里插入图片描述

3.2 常用注解

mybatis-plus:主键采用雪花算法生成值的前提是实体类的主键属性名称必须为id。

mybatis-plus:数据表字段带有_的可以自动映射到驼峰式命名的属性上(t_user——》tUser)。

注解:

@TableName(“数据库表名”):使用场景实体类名称和数据表名不一致时,通过它指定表名,此时就可以使用mp的单表操作。

@TableId(“主键名”):使用场景实体类属性名称和数据表主键不是id时,通过它声明该属性为主键,就可以采用雪花算法生成主键值操作。

@TableField(“字段名”):使用场景实体类属性名称和数据表字段名不一致时,通过它指定数据表字段名称,就可以和实体类属性对应。

常用注解

1、指定表名,用于与数据库表一一对应,非驼峰命名对应的情况。

@TableName(“tp_user”)

class User {…}

2、指定主键,用于数据库不是以id为主键的表。

@TableId

Long user_id;

3、指定列名,用于数据库修改了列名,而不想修改定义的变量的情况。

@TableField(“real_name”)

String name;

3.3 忽略字段

@TableName(“user”) // 指定表名(数据库表名与实体名称不一致时使用);
@TableField(“name”) // 指定列名(数据库列名与实体属性名称不一致时使用);
@TableField(exist = false) // 忽略该字段(实体属性存在,数据库列不存在时使用);

排除非表字段的三种方式

使用场景:实体类中的某个属性不对应表中的任何字段,只是用于保存临时数据,或者临时组装的数据。

使用方式

1、transient修饰实体类属性(修饰的属性不会被序列化)。

缺陷:有些需求需要序列化该字段。

2、static修饰属性(前提手动实现get、set方法,Lombok对静态属性不会提供get、set方法)。

缺陷:每个对象的属性值一致。

3、@TableField(exist=false),这个注解用来表示数据表中不存在该字段,默认是true。推荐 .
在该属性上面添加@TableFieId(exist=false):exist代表数据库是否有该字段,false代表没有

排除非表字段的三种方式

1.  使用 transient 修饰

private transient String remark;
2. 使用static修饰

private static String remark;
3. @TableField(exist=false)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值