首页 > 其他分享 >Mybatis概论及配置说明

Mybatis概论及配置说明

时间:2024-04-09 16:58:08浏览次数:24  
标签:MyBatis 对象 配置 mybatis SqlSession SQL Mybatis -- 概论

一、什么是mybatis?

MyBatis 是一款优秀的半自动的ORM持久层框架,它支持自定义 SQL、存储过程以及高级映射。

MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

二、MyBaits与JDBC

JDBC核心对象

DriverManager,数据库驱动管理对象
Connection,数据库连接对象
Statement | PrepareStatement ,操作数据库SQL语句对象
ResultSet,结果集对象

MyBaits核心对象

SqlSession对象,该对象包含了执行SQL语句的所有方法,例如JDBC里面Connection

Executor接口,将传递过来的参数动态生成SQL语句,负责查询缓存。

MappedStatement对象,该对象负责对SQL封装,用于存储需要映射的SQL语句及参数等信息

ResultHandler对象,用户返回结果集合,封装成最红想要的数据类型,可以自定义返回类型

三、MyBaits执行流程

 依赖: 

     //mybatis依赖配置
    implementation 'org.mybatis:mybatis:3.5.15'
    //MySQL连接驱动
    implementation 'com.mysql:mysql-connector-j:8.2.0
mybatis核心组件:
①SqlSessionFactoryBuilder:构建SqlSessionFactory的构建器,采用了分布构建方式进行构建
②SqlSessionFactory:生产SqlSession的工厂(工厂设计模式),在项目的生命周期应该以单例的形式进行存在
③SqlSession:mybatis围绕SqlSession进行工作,
提供:发送执行sql语句;
   获取mapper映射器;
控制事务
④mapper映射器:接口+映射文件(注解或者xml)xml常用

注意:在xml中&是特殊符号,有具体的语义,要使用&表示连接

mybatis不支持方法重载
因为MyBatis动态代理寻找策略是:全限定名+方法名,不涉及参数,所以MyBatis不支持方法重载。
方法重载:方法名相同,参数列表不同

配置文件:mybatis-config.xml
复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!--命名空间及约束文件-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<configuration>
    <!--通过 properties文件进行配置datasource数据源-->
    <properties resource="datasource.properties"/>
    <!--settings:会改变mybatis的运行时行为
    logImpl:指定mybatis所有日志的具体实现,未指定时将自动查找
    mapUnderscoreToCamelCase:驼峰映射
    autoMapperBehavior:指定mybatis应如何自动映射列到字段或属性
    (NONE:关闭自动映射;PARTIAL只会自动映射没有定义嵌套结果映射的字段;FULL会自动映射任何)
    .....
    -->
    <settings>
    <!-- 开启驼峰映射 默认是关闭的-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!--类型别名:不区分大小写-->
    <typeAliases>
        <!-- 针对类型单独进行别名配置-->
        <typeAlias type="com.monster.pojo.Student" alias="student"/>
        <!-- 位于指定包下指定别名,别名即为类的简单名称(mybatis 的别名不区分大小写)-->
        <package name="com.monster.pojo"/>
    </typeAliases>

    <!--类型处理器:处理Java对象属性和数据表字段类型不一致的类型转换
    BooleanTypeHandler
    FloatTypeHandler
    BigDecimalTypeHandler
    EnumTypeHandler: 数据库兼容的字节流类型【VARCHAR 或任何兼容的字符串类型,用来存储枚举的名称(而不是索引序数值)】
    .....等等
    -->
    <typeHandlers>
        <!-- 单独加载 自定义类型转换处理器-->
<!--        <typeHandler handler="com.monster.typehandler.GenderTypeHandler"-->
<!--                     javaType="com.monster.enums.Gender"/>-->
        <!-- mybatis自带的类型转换器(这儿是枚举转换器)-->
        <typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"
                     javaType="com.monster.enums.Gender"/>

        <!--包加载-->
        <!-- <package name="com.monster.typehandler"/>-->

    </typeHandlers>
    <!--  自定义对象工厂:当创建结果集的时候,mybatis会使用一个对象工厂创建这个结果集的实例,然后实现里面的方法  -->
    <objectFactory type="com.monster.factory.MyObjectFactory"/>
    
   <!-- 插件(plugins):允许你在映射语句执行过程中的某一点进行拦截调用。

    -->
    <!-- 环境配置 -->
    <environments default="development">
        <environment id="development">
            <!-- 事务管理器(需要实现Transaction接口)
            JDBC:采用JdbcTransaction生成的JdbcTransaction对象实现,以JDBC的方式对数据库的事务进行操作
            MANAGED:采用ManagedTnansaction生成的WanagedTransaction对象实现。它的提交和回滚不需要任何操作,而是把事务交给容器处理。
            在默认情况下会自动关闭连接,然而容器并不希望这样做,因此需要将closeConnection属性设置为false来阻止它默认的关闭行为
            -->
            <transactionManager type="JDBC"/>

            <!-- 数据源环境
                POOLED:连接池
                UNPOOLED:非连接池的方式创建连接
                JNDI:在外部(容器)配置数据源
             -->
            <dataSource type="POOLED">
                <!-- 连接驱动-->
                <property name="driver" value="${driverClassName}"/>
                <!-- 在xml中&是特殊符号,有具体的语义,要使用&amp表示连接-->
                <property name="url" value="jdbc:mysql://localhost:3306/studentmanage?userUnicode=true&amp;characterEncoding=UTF8"/>
                <property name="username" value="longhj"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 映射器
    ①类名
    ②包名
    ③注解映射   -->
    <mappers>
    <!--<mapper resource="com/monster/mapper/StudentMapper.xml"/>
    顺序:mapper >> package
    -->
        <!--通过注解映射的mapper直接被扫描,不需要通过xml注册-->
<!-- 省略:<mapper class="com.monster.mapper.BookMapper"/>-->
        <package name="com/monster/mapper"/>
    </mappers>
</configuration>
复制代码

标签:MyBatis,对象,配置,mybatis,SqlSession,SQL,Mybatis,--,概论
From: https://www.cnblogs.com/1757656300qqcom/p/18124302

相关文章

  • 两种方式实现SpringBoot脚手架的依赖配置
    在基于SpringBoot脚手架创建项目时,通常会直接将spring-boot-starter-parent作为<parent>,如下示例:<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.10</vers......
  • Mockito测试框架结合mybatisplus项目中第一次体验
    因为要补充单测,一般的springbootTest不是真正意义上的单测。我们需要mock数据库的连接,而不是真正的调用。所以我觉得mockito测试框架就挺好的pom引入如下代码,这里用inline是因为我要用到静态方法的调用。<dependency><groupId>org.mockito</groupId>......
  • java-myBatis-plus(CRUD)
    https://baomidou.com/pages/10c804/#abstractwrapper 笔记1BaseMapperCRUD接口的方法insertdeleteentity条件deletByIdiddeletBacthIdsidsdeletByMapmap添加updateentiy条件updateById......
  • 最简洁的Docker环境配置
    Docker环境配置Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Mac、Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。总之它加快构建、共享和运行现代......
  • react 配置@别名
    1.安装craco工具npmi-D@craco/cracocraco是一个用于扩展CreateReactApp(CRA)的工具,CRA是一个用于快速搭建React应用的脚手架工具。CRA提供了一个简单的项目结构和配置,使得开发者可以快速开始一个React项目的开发。然而CRA的配置是被隐藏的,开发者无法对其进行自定......
  • Graylog配置告警
     1.新建Alert 添加Fields添加2个字段,如下图所示:告警后可以显示字段值,如下: ......
  • idea配置springmvc项目
    传统的web项目(含有webroot文件夹)导入IDEA需要做的一系列配置_ideawebroot-CSDN博客IDEA部署以往的springmvc项目,用外部Tomcat部署---精简版,几步操作完成_springmvc用外置的tomcat-CSDN博客参考这位博主的内容成功配置需要修改的是默认启动文件出现新的问题,js和css文件不好使,......
  • mybatis框架log4j日志配置详解及jar包下载
    mybatis框架配置日志步骤1.引入日志的jar包logback-classic-1.2.3.jar,logback-core-1.2.3.jar,slf4j-api-1.7.26.jar链接:百度网盘请输入提取码提取码:4ufh下载后在工程中新建一个lib文件夹如图所示:将下载好的jar包复制到lib文件夹中,并添加到库引用(不要漏掉!)如图所......
  • MyBatis中如果某个查询不希望使用缓存,可以在映射文件中的select语句上设置flushCache=
    <selectid="xmlGetGuaranteeCount"databaseId="sqlserver"resultType="Integer"flushCache="true"><![CDATA[SELECTcount(appisparea.ID)FROMT_APP_ISP_ARE......
  • oppowatch4pro功能介绍 oppowatch4pro参数配置
    寰宇曲面设计:贴合手腕的微弧曲线,从屏幕中间向边缘延伸,流畅优雅,为您带来无与伦比的佩戴体验。精钢表壳与陶瓷底盖:高奢材质彰显质感,精钢一体表壳经178道工序打磨,硬朗耐用;陶瓷底盖触感细腻,尽显工艺之美。超长续航:旗舰双芯设计,提供5天全智能续航,让您摆脱频繁充电的困扰;更有14天轻......