Mybatis工作原理及其配置文件

什么是mybatis

mybatis是一种持久型框架,就是半成品,对很多的底层操作进行了封装,开发人员只需按照它的规范进行配置就可以快速的实现需求。类似的持久型框架还有Hibernate。
在对jdbc的使用中,有一些问题存在:

   (1)频繁连接数据库,影响系统的性能
   
   (2)sql语句硬编码在Java代码中。实际中sql的变化很大
   
   (3)使用preparedStatement向占有位符号传参也存在硬编码问题
   
   (4)查询的结果集是硬编码

为了解决以上问题,可以通过使用mybatis解决

mybatis工作原理

在这里插入图片描述

    (1)导入jar包:MySQL、MyBatis
	
	(2)MyBatis的全局配置文件(.xml):配置了mybatis的运行环境等信息。
	
	(3)sql映射文件(.xml):配置了操作数据库的sql语句。这个文件需要在全局配置文件中加载
	
	(4)构造SqlSessionFactory(会话工厂)
	
	(5)由会话工厂创建sqlSession(会话),所有对数据库的操作由该会话来完成
	
	(6)由sqlSession调用Executor执行器
	
	(7)MappedStatement完成sql映射文件、参数、查询结果与pojo之间的映射的转换

idea创建Maven项目中整合MyBatis

项目结构
在这里插入图片描述

在idea中创建Mybatis全局配置文件、sql映射文件

sql映射文件(后缀名为properties)
在这里插入图片描述

mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/info?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
mysql.user=root
mysql.password=010220

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>


    <!--.properties文件中读取数据库的配置信息,不用硬编码 -->
    <properties resource="jdbc.properties"></properties>


    <!--配置MyBatis运行的全局参数-->
    <settings>
        <setting name="logImpl" value="LOG4J"/>

        <!--        开启懒加载(开启延迟加载)-->
        <setting name="lazyLoadingEnabled" value="true"/>

        <!--        关闭实时加载-->
        <setting name="aggressiveLazyLoading" value="false"/>

        <!--        开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>

    <!--自定义别名-->
    <typeAliases>
        <!-- 批量配置别名 -->
        <package name="com.pojo"/>
        <!-- 配置单个别名 -->
        <!--typeAlias type="com.pojo.Student" alias="Student"/ -->
    </typeAliases>

    <!--配置数据库环境 -->
    <environments default="mysql">
        <environment id="mysql">

            <!--配置事务管理器-->
            <transactionManager type="JDBC"/>
            <!--配置数据源-->
            <dataSource type="POOLED">
                <property name="driverClassName" value="${mysql.driver}"/>
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.user}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--映射器;告诉MyBatis在哪里找映射文件-->
    <mappers>
        <!--   使用类路径查找映射文件     <mapper resource="com/mapper/StudentMapper.xml"/>-->
        <!--   使用接口名     <mapper class="com.mapper.StudentMapper"/>-->
        <!--使用本地文件的绝对路径 <mapper url="file:///c:/xxx/xxxmapper.xml"/>-->
        <!--使用包名-->
        <package name="com.mapper"/>
    </mappers>
</configuration>
1、properties resource:
<properties resource="jdbc.properties"></properties>

   可以从.properties文件中读取数据库的配置信息
   不用硬编码;方便统一管理
   
2、settings:
配置MyBatis运行的全局参数

   (1)开启二级缓存
   <setting name="cacheEnabled" value="true"/>
   (2)开启延迟加载
    <setting name="lazyLoadingEnabled" value="true"/>
3、typeAliases:
自定义别名。在映射文件中配置sql语句的resultType、parameterType时要使用全类名。通过配置别名可以方便开发
				
	(1)配置单个别名
	
	    <typeAlias type="com.pojo.Student" alias="Student"/>
		
	(2)批量配置别名
	
	    <package name="com.pojo"/>
		
4、typeHandlers:
完成jdbc类型和java类型的转换

5、environments:
配置数据库环境

    (1)<transactionManager type="JDBC"/>:
    配置事务管理器
   
        A、jdbc:直接使用jdbc的事务提交和回滚,依赖于数据源
	   
	    B、managed:自己不提交和回滚一个连接(什么都不做),而是让容器来管理事务
		
	(2)<dataSource type="POOLED">:
	配置数据源
	
	    A、POOLED:使用jdbc的数据库连接池对数据库连接对象进行管理
		
		B、UNPOOLED:不使用数据库连接池,需要时建立连接,使用结束后关闭连接
		
		C、JDNI:使用web服务器来实现数据库的连接,由Web服务器在外部配置数据源
		
6、mappers:
映射器。告诉MyBatis在哪里找映射文件

    (1)使用类路径查找映射文件
	
	    <mappers>
           <mapper resource="com/mapper/StudentMapper.xml"></mapper>
        </mappers>
		
	(2)使用本地文件:使用本地文件的绝对路径
	
	    <mapper url="file:///c:/xxx/xxxmapper.xml"/>
		
	(3)使用接口名
	
	    <mapper class="com.mapper.StudentMapper"/>
		
	(4)使用包名
	 <package name="com.mapper"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值