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

MyBatis

  • 什么是SSM?
  • MyBatis特性
  • MyBatis和其它持久化技术对比
    • JDBC
    • Hibernate和JPA
    • MyBatis
  • 创建MyBatis的核心配置文件
  • 创建mapper接口
  • 创建MyBatis的映射文件
  • 测试添加功能
    • 优化功能
  • 加入log4j日志文件功能
    • 日志的级别
  • MyBatis核心配置文件之environment
  • MyBatis核心配置文件之properties
  • MyBatis核心配置文件之typeAliases
  • MyBatis核心配置文件之mappers
  • 思考:映射文件中的SQL该如何拼接?


什么是SSM?

MyBatis 核心配置文件及映射文件_第1张图片
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日录下


DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    
  <environments default="default">
        
        <environment id="default">
            
            <transactionManager type="JDBC"/>
            
            <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日志文件功能

第一步 加入依赖


<dependency>
    <groupId>log4jgroupId>
    <artifactId>log4jartifactId>
    <version>1.2.17version>
dependency>

第二步 加入配置文件


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 核心配置文件及映射文件_第2张图片

MyBatis 核心配置文件及映射文件_第3张图片

MyBatis 核心配置文件及映射文件_第4张图片
MyBatis 核心配置文件及映射文件_第5张图片


MyBatis核心配置文件之properties

将数据库信息写在properties里面,之后在配置文件里面引用
第一步:创建properties文件,并且编写数据库配置信息
在这里插入图片描述
第二步:在配置文件中引入properties文件
MyBatis 核心配置文件及映射文件_第6张图片
第三步:编写数据库连接池
MyBatis 核心配置文件及映射文件_第7张图片


MyBatis核心配置文件之typeAliases

MyBatis核心配置文件中,标签的顺序:
propertiers?,setting?,typeAliases?,typeHandlers?
objectFactory?,objectWrapperFactory?,reflectorFactory?,
plugins?,environments?,dataseIdProvider?,mappers?
为了避免重复频繁的写在mapper中的resultType写全类名
在这里插入图片描述
所以可以在配置文件中利用typeAliases标签创建一个简短的别名
在这里插入图片描述随后在mapper文件写sql语句时可以
在这里插入图片描述
注意
不区分大小写
若不设置属性alis
在这里插入图片描述
则会有默认别名就是类名不区分大小写
MyBatis 核心配置文件及映射文件_第8张图片


MyBatis核心配置文件之mappers

MyBatis 核心配置文件及映射文件_第9张图片
MyBatis 核心配置文件及映射文件_第10张图片


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

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

MyBatis 核心配置文件及映射文件_第12张图片

你可能感兴趣的:(MyBatis,mybatis,java,hibernate)