zoukankan      html  css  js  c++  java
  • Mybatis Plus 快速入门

    一、快速入门

    1、建库建表

    #创建用户表
    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、引入依赖

    <?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>org.example</groupId>
        <artifactId>mp</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.4.1</version>
        </parent>
    
        <dependencies>
            <!--SpringBoot启动器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <!--SpringBoot test启动器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--lombok简化java代码-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <!--Mybatis-Plus启动器-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.1.0</version>
            </dependency>
            <!--Mysql Jdbc驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
        </dependencies>
    
    </project>

    3、配置

    application.yml

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

    4、编码

    Application.java

    package com.mp;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    @MapperScan("com.mp.dao")
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class,args);
        }
    }

    User.java

    package com.mp.entity;
    
    import lombok.Data;
    
    import java.util.Date;
    @Data
    public class User {
        //主键
        private Long id;
        //姓名
        private String name;
        //年龄
        private int age;
        //邮箱
        private String email;
        //直属上级id
        private Long managerId;
        //创建时间
        private Date createTime;
    }

    UserMapper.java

    package com.mp.dao;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.mp.entity.User;
    
    public interface UserMapper extends BaseMapper<User> {
    }

    5、测试

    SimpleTest.java

    package com.mp;
    
    import com.mp.dao.UserMapper;
    import com.mp.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;
    
    @SpringBootTest
    public class SimpleTest {
        @Autowired
        private UserMapper userMapper;
    
        @Test
        public void select(){
            List<User> list = userMapper.selectList(null);
            list.forEach(System.out::println);
        }
    }

    测试 insert 语法

    @Test
    public void insert() {
        User user = new User();
        user.setName("刘明强");
        user.setAge(31);
        user.setManagerId(1088248166370832385L);
        user.setCreateTime(new Date());
        int rows = userMapper.insert(user);
        System.out.println("影响记录数:" + rows);
    }

    二、常用注解

    注意上面的 insert 是可以成功插入数据的,但是代码中未给主键字段赋值,默认情况下,MP 会将类名称自动识别为数据库表名,对类中名为 id 的字段会自动识别是主键字段,而且 MP 自动识别驼峰形式的命名方式。

    但现实情况,类名不等于数据库表名,而且主键字段也不一定叫 id,属性和数据库字段也不一定满足驼峰格式,对此,MP 也提供了解决方法。参考官网文档

    @Data
    @TableName("mp_user")
    public class User {
        //主键
        @TableId
        private Long userId;
        //姓名
        @TableField("name")
        private String realName;
    }

    三、排除非表字段的三种方式

    1、对属性加关键字 transient,使该属性不参入序列化

    private transient String remark;

    2、对属性加关键字 static,使之成为类变量

    private static String remark;

    3、使用@TableField(exist = false),标记数据库不存在该字段

    @TableField(exist = false)
    private String remark;
  • 相关阅读:
    OC面向对象—封装
    OC面向对象—继承
    hdu 4612 Warm up(缩点+树上最长链)
    hdu 4604 Deque(最长不下降子序列)
    hdu 4607 Park Visit(树上最长链)
    hdu 4609 3-idiots(快速傅里叶FFT)
    codeforces 333B
    codeforces 333A
    codeforces 334B
    codeforces 334A
  • 原文地址:https://www.cnblogs.com/jwen1994/p/14298680.html
Copyright © 2011-2022 走看看