计算机系统应用教程网站

网站首页 > 技术文章 正文

网易架构师吐血整理:2分钟看完Mybatis核心知识点

btikc 2024-09-29 10:00:17 技术文章 17 ℃ 0 评论

最近整理了一些Java架构学习视频和大厂项目底层知识点,需要的同学欢迎私信我【Java】发给你~

1.mybatis基本结构

mybatis是目前很流行的一个ORM框架,它帮助开发者实现数据库记录和POJO对象之间的映射,简化了在开发过程对数据库的操作。

mybatis核心组件有以下几个:

  • SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)
  • SqlSessionFactory:依靠工厂来生成SqlSession(会话)
  • SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口。
  • SQL Mapper:是由Java接口和XML文件构成,需要给出对应的SQL和映射规则。

2.mybatis xml文件主要标签

  • select 查询语句,传递多个参数时可以使用"@Param"注解,也可以使用java bean
  • insert 插入语句
  • update 更新语句
  • delete 删除语句
  • sql 允许定义一部分SQL然后在各个地方应用
  • resultMap 用于描述从数据库结果集来加载对象

3.mybatis缓存

mybatis支持一级缓存和二级缓存,在没有配置的默认情况下,只开启一级缓存。

  • 一级缓存:在参数和SQL完全一致的情况下,使用同一个SqlSession对象,多次SQL查询,往往只会执行一个SQL,后面的若干次查询都会从缓存中取数据(在缓存没超时的情况下)。
  • 二级缓存:在使用不同的SqlSession对象时,因为不同的SqlSession是相互隔离的,所以即使用相同的mapper、参数和方法,它还是hui会再次发送SQL到数据库执行。而二级缓存可以解决这个问题,二级缓存是在SqlSessionFactory层面共享的。

4.mybatis自动生成mapper

  • 安装idea mybatis插件,插件需要破解
  • 按照实际的表名,修改下面的示例生成文件

示例生成文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC
        "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>

    <!-- !!!! Driver Class Path !!!! -->
    <classPathEntry location="C:\Users\zhangfangyu1\.m2\repository\mysql\mysql-connector-java\5.1.29\mysql-connector-java-5.1.29.jar"/>

    <context id="context" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressAllComments" value="false"/>
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!-- !!!! Database Configurations !!!! -->
        <jdbcConnection driver connectionURL="jdbc:mysql://10.122.174.131:3306/activitypromotion" userId="activity_dev" password="uIneXoLlWl0l0eE9MCq4"/>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- !!!! Model Configurations !!!! -->
        <javaModelGenerator targetPackage="com.netease.kaola.pop.core.pojo" targetProject="src/main">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="false"/>
        </javaModelGenerator>

        <!-- !!!! Mapper XML Configurations !!!! -->
        <sqlMapGenerator targetPackage="mybatis" targetProject="src/main">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- !!!! Mapper Interface Configurations !!!! -->
        <javaClientGenerator targetPackage="com.netease.kaola.pop.core.dao" targetProject="src/main" type="XMLMAPPER">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- !!!! Table Configurations !!!! -->
        <table tableName="tb_pop_oplog" domainObjectName="PopOperateLog" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
               enableUpdateByExample="false"/>
    </context>
</generatorConfiguration>


搬运来源:网易工程师-张方宇

看到这里的小伙伴,如果你喜欢这篇文章的话,别忘了转发、收藏、留言互动!

最近我新整理了一些Java资料,包含个人精选的Java架构学习视频、大厂实战知识点、大厂内部面试题,如果你需要的话,欢迎私信我

如果对文章有任何问题,欢迎在留言区和我交流~

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表