MyBatis 核心配置文件及映射文件详解

 更新时间:2023年01月13日 09:01:23   作者:杨宸杨  
MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架,本文重点介绍MyBatis 核心配置文件及映射文件,需要的朋友可以参考下

什么是SSM?

在这里插入图片描述

IBatis提供的持久层框架包括SQLMap和Data Access Objects(DAO)

MyBatis特性

1)MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架
2)MyBatis 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
3) MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和java的POJO (Plain Old Java Objects,普通的Java对象)映射成数据库中的记录
4)MyBatis是一个半自动的ORM(Object Relation Mapping)框架(将数据库中的数据,映射到实体类对象,用户直接操作实体类对象即可)

MyBatis和其它持久化技术对比

JDBC

1.SQL夹杂在java代码中耦合度高,导致硬编码内伤
2.维护不易且实际开发需求中SQL有变化,频繁修改的情况多见
3.代码冗长,开发效率低

Hibernate和JPA

1.操作简单,开发效率高
2.程序中的长难复杂SQL需要绕过框架
3.内部自动生产的SQL,不容易做特殊优化
4.基于全映射的全自动框架,大量字段的POJO进行部分映射比较困难
5.反射操作太多,导致数据库性能下降

MyBatis

1.轻量级,性能出色
2.SQL和java编码分开,功能边界清晰,java代码专注业务、SQL语句专注数据
3.开发效率稍逊于Hibernate,但是完全能够接受

创建MyBatis的核心配置文件

习惯上命名为mybatis-config.xml,这个文件名仅仅是建议,并非强制要求。将来整合Spring之后,这个配置文件可以省略,所以大家操作时可以直接复制、粘贴
核心配詈文件主要用于配置连接数据库的环境以及MyBatis的全同配置信息
核心配置文件存放的位置是srcimain/resources日录下

<?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>

    <!--定义属性文件
        resource:从类路径下面读取外部文件
        url:从一个资源定位地址来读取配置文件
        提供参数使用: 可以使用 ${参数名} 进行参数引用
    -->
  <environments default="default">
        <!--环境变量-->
        <environment id="default">
            <!--事务管理器:由JDBC管理事务 -->
            <transactionManager type="JDBC"/>
            <!--数据源配置信息:POOLED 使用连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="2022"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载其他的映射文件 -->
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

创建mapper接口

MyBatls中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。

创建MyBatis的映射文件

MyBatls中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。

创建MyBatis的映射文件
相关概念:ORM(Object Relationship Mapping)对象关系映射
.对象:java的实体类对象
.关系:关系型数据库
.映射:二者之间的对应关系
映射文件的命名规则->表所对应的实体类的类名+Mapper.xml

测试添加功能

SqlSession:代表java程序和数据库之间的会话。(HttpSession是java程序和浏览器之间的会话)
SqlSessionFactory:是”生产SqlSession的”工厂。
工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个”工厂类”中,以后都使用这个工厂类来”生产”我们需要的对象

示例代码:

@Test
public void testMyBatis() throws IOException {
    //加载核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //获取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //获取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //获取SqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //获取mapper接口对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    //测试功能
    int result = mapper.insertUser();
    //提交事务
    sqlSession.commit();
    System.out.println("result:"+result);
}

需要手动提交数据的原因

在这里插入图片描述

优化功能

对于简单的SQL我们没必要每次都手动提交数据,因此可以把默认的手动提交,变为自动提交

在这里插入图片描述

加入log4j日志文件功能

第一步 加入依赖

<!--log4j日志-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

第二步 加入配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}
%m (%F:%L) \n"/>
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug"/>
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info"/>
    </logger>
    <root>
        <level value="debug"/>
        <appender-ref ref="STDOUT"/>
    </root>
</log4j:configuration>

日志的级别

FATA(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)
从左到右打印的内容越来越详细

在这里插入图片描述

MyBatis核心配置文件之environment

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

MyBatis核心配置文件之properties

将数据库信息写在properties里面,之后在配置文件里面引用
第一步:创建properties文件,并且编写数据库配置信息

在这里插入图片描述

第二步:在配置文件中引入properties文件

在这里插入图片描述

第三步:编写数据库连接池

在这里插入图片描述

MyBatis核心配置文件之typeAliases

MyBatis核心配置文件中,标签的顺序:
propertiers?,setting?,typeAliases?,typeHandlers?
objectFactory?,objectWrapperFactory?,reflectorFactory?,
plugins?,environments?,dataseIdProvider?,mappers?
为了避免重复频繁的写在mapper中的resultType写全类名

在这里插入图片描述

所以可以在配置文件中利用typeAliases标签创建一个简短的别名

在这里插入图片描述

随后在mapper文件写sql语句时可以

在这里插入图片描述

注意
不区分大小写
若不设置属性alis

在这里插入图片描述

则会有默认别名就是类名不区分大小写

在这里插入图片描述

MyBatis核心配置文件之mappers

在这里插入图片描述

在这里插入图片描述

当表的数量太多的时候,需要大量的mapper标签来引入映射文件,为此我们可以通过引入包的方式来引入映射文件
以包为单位引入映射文件
要求:
1.mapper接口所在的包要和映射文件所在的包一致
2.mapper接口要和映射文件的名字一致

在这里插入图片描述

思考:映射文件中的SQL该如何拼接?

在这里插入图片描述

到此这篇关于MyBatis 核心配置文件及映射文件的文章就介绍到这了,更多相关MyBatis 核心配置文件映射内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Redisson公平锁的源码解读分享

    Redisson公平锁的源码解读分享

    Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。这篇文章主要通过源码和大家聊聊Redisson公平锁,需要的可以了解一下
    2022-11-11
  • Java Lombok实现手机号码校验的示例代码

    Java Lombok实现手机号码校验的示例代码

    手机号码校验通常是系统开发中最基础的功能之一,本文主要介绍了Java Lombok实现手机号码校验的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Java案例分享-集合嵌套

    Java案例分享-集合嵌套

    这篇文章主要介绍了Java案例分享-集合嵌套,通过案例创建一个ArrayList集合,存储三个元素,每一个元素都是HashMap,每一个HashMap的键和值都是String,并遍历,实际操作内容需要的小伙伴可以参考一下
    2022-04-04
  • java项目jar包与jdk的版本不兼容的问题解决

    java项目jar包与jdk的版本不兼容的问题解决

    这篇文章主要介绍了java项目jar包与jdk的版本不兼容的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • JAVA自定义异常使用方法实例详解

    JAVA自定义异常使用方法实例详解

    这篇文章主要介绍了JAVA自定义异常使用方法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • spring 如何将配置信息注入静态变量的方法

    spring 如何将配置信息注入静态变量的方法

    本篇文章主要介绍了spring 如何将配置信息注入静态变量的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Java 后端开发中Tomcat服务器运行不了的五种解决方案

    Java 后端开发中Tomcat服务器运行不了的五种解决方案

    tomcat是在使用Java编程语言开发服务端技术使用最广泛的服务器之一,但经常在开发项目的时候会出现运行不了的情况,这里总结出几种能解决的办法
    2021-10-10
  • Java连接数据库oracle中文乱码解决方案

    Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Java源码解析HashMap简介

    Java源码解析HashMap简介

    今天小编就为大家分享一篇关于Java源码解析HashMap简介,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Java实现加盐加密算法的示例详解

    Java实现加盐加密算法的示例详解

    这篇文章主要为大家详细介绍了如何利用Java语言实现加盐加密算法,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-06-06

最新评论