MybatisPlus:SpringBoot项目整合MybatisPlus配置流程

1,ORM思想

对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换

应用ORM思想的框架:Mybatis,Hibernate

总结:以对象的方式操作数据库

2,MybatisPlus实现原理

分析问题的本质:
​ 1),对象—属性
​ 2),表—字段

2.1 对象和表如何关联? 利用自定义注解
2.2 如何实现CRUD方法的简化? 定义一个公共的Mapper接口,其中添加CRUD方法
2.3 需要将对象转化为sql语句 利用特定的语法进行转化

3,MybatisPlus入门案例

1,添加依赖jar包

<dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>3.4.2version>
dependency>

2,在yml文件中配置mybatis-plus

#spring整合mybatisplus
mybatis-plus:
  #定义别名包  作用:以后封装pojo对象时会自动进行拼接
  type-aliases-package: com.jt.pojo
  #映入mapper配置文件
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

3,pojo包的实体类中添加注解

package com.jt.pojo;

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 lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Data
@Accessors(chain = true)

@TableName("user")//引入表格
public class User implements Serializable {
      //规则 如果属性名和字段名一致(包含驼峰规则),则可以不写,
                    // 例@TableField(value = "name")等就可以不写了
    @TableId(type = IdType.AUTO)//标识主键  且主键自增
    private Integer id;
    //@TableField(value = "name") 可省略不写
    private String name;
    //@TableField(value = "age")
    private Integer age;
    //@TableField(value = "sex")
    private String sex;
}

4,继承公共的Mapper接口

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jt.pojo.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

//@Mapper //为接口创建代理对象 交给spring管理
//BaseMapper 继承该父类接口一定要写泛型
public interface UserMapper extends BaseMapper<User> {
     

    List<User> findAll();
}

5,查询数据测试

@Test
    void testMP(){
     
        //单表计划不写sql
        List<User> all = userMapper.findAll();
        //查询所有user表数据 不写where条件
        List<User> users = userMapper.selectList(null);
        System.out.println(all);
        System.out.println(users);
    }

6,新增数据测试

@Test
    void insert(){
     
        User user=new User();
        user.setName("MP测试新增").setAge(20).setSex("nan");
        userMapper.insert(user);
    }

MybatisPlus动态拼接SQL原理说明:

对象: 关联的数据表|关联的表字段.
数据库执行: Sql语句.
java基础: 反射机制

分析:

当执行insert方法时,MybatisPlus框架会创建插入sql语句:

insert into 表名(字段名) value(插入值);

userMapper.insert(user)中传入的对象是user,而user是User的实例化对象,因此会得到User类上的注解@TableName(“user”),进而得到"表名"为user,此时SQL语句中的表名就得到了;

同时也可以得到注解@TableField,从而获取到表中的“字段名”name、age及sex,此时的sql语句为:

insert into user(name,age,sex) value(插入值);

拿到具体的属性后,可以通过属性提供的get方法获取到具体的属性值,也就是需要的“插入值”,此时的sql语句为:

insert into user(name,age,sex) value(user.getName,user.getAge,user.getSex);

此处具体为insert into user(name,age,sex) value(“MP测试新增”,20,“nan”);

到此就完成了动态SQL的拼接,完成上述操作后交给Mybatis处理就可以了。
以上,仅供学习参考

你可能感兴趣的:(笔记,Java基础,mybatis,java,数据库,spring)