java思维导图进阶笔记(二)mybatis与mybatis plus

二、持久层框架mybatis篇与mybatis-plus使用【我还看不懂】

mybatis简介

mybatis基本概念

  • 优秀的持久层框架
  • 支持定制化SQL、存储过程以及高级映射
  • 使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs映射程数据库中的记录。
  • 先去自行了解mybatis的基本概念

jdbc与mybatis关系

  • JDBC是Java提供的一个操作数据库的API
  • MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架
  • MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集

核心组件

  • SqlSessionFactoryBuilder

SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例.

  • SqlSessionFactory

应用级别,最好单例,用于创建SqlSession

一个数据库对应一个SqlSessionFactory

  • SqlSession

封装一系列数据库操作的方法

面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句

内部执行方法是excute,涉及到一级缓存、二级缓存等概念

  • Executor【重要】

SqlSession向用户提供操作数据库的方法,但和数据库操作有关的职责都会委托给Executor

  • BaseExecutor

BaseExecutor是一个实现了Executor接口的抽象类,定义若干抽象方法,在执行的时候,把具体的操作委托给子类进行执行

  • Cache

MyBatis中的Cache接口,提供了和缓存相关的最基本的操作

  • Configuration 【全局配置文件】

Mybatis所有的配置信息都维持在Configuration对象之中

  • StatementHandler
  • ParameterHandler
  • ResultSetHandler【结果转换执行器】
  • TypeHandler
  • MappedStatement【增删改查节点的封装】
  • SqlSource
  • BoundSql

Mybatis执行原理

1554642953912

获取数据库中的表、字段

  • 1、通过information_schema数据库 获取表 获取字段
  • 2、通过show命令 获取表 #获取表信息 show table status 获取字段 show full fields from student;

阅读源码

lombok

Maven里面配置一下阿里云的镜像

动态代理(InvocationHandler)

静态代理(设计模式)

mybatis plus 简介

  • Mybatis-Plus(简称MP)是一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发,提高效率而生。

返回结果

  • int result = 0;
    使用userMapper返回的是影响行数
  • boolean result = false;
    使用ActiveRecord模式返回成功标识

  • result = userMapper.insert(user);
  • result = user.insert();

  • userMapper.deleteById(user.getId());
  • user.deleteById();

  • userMapper.updateById(user);
  • user.updateById();

userMapper.selectById(user.getId());

user.selectById();

userMapper.selectList(

    new EntityWrapper<User>().eq("name", "张三")

);

// 分页查询 10 条姓名为‘张三’、性别为男,
//且年龄在18至50之间的用户记录
List<User> userList = user.selectPage(
        new Page<User>(1, 10),
        new EntityWrapper<User>().eq("name", "张三")
                .eq("sex", 0)
                .between("age", "18", "50")
).getRecords();

相关

文章:https://www.java-mindmap.com/view/21

官网:https://mp.baomidou.com/

官网实例:https://gitee.com/baomidou/mybatis-plus-samples

本文链接:

https://heyzen.club/index.php/J/234.html
1 + 3 =
快来做第一个评论的人吧~