MyBatis框架学习(3)

两个文件 全局配置文件

内容为雷丰阳老师的SSM框架内容记录

1.全局配置文件:mybatis-config.xml;
    指导mybatis正确运行的一些全局设置
2.SQL映射文件:EmployeeDao.xml;
    相当于是对Dao接口的一个实现描述

细节:
    1.获取到的是接口的代理对象;mybatis自动创建的;
    2.SqlSessionFactory和SqlSession
        SqlSessionFactory创建SqlSession对象,factory只new一次就行
        SqlSession:相当于connection和数据库进行交互,和数据库的一次会话,就应该创建一个新的sqlSession;

全局配置文件

<?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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <!-- 配置连接池 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url"  value="jdbc:mysql://localhost:3306/mybatis_0325"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  
  <!-- 引入我们自己编写的每一个接口的实现文件 -->
  <mappers>
  <!-- resource:表示从类路径下找资源 -->
    <mapper resource="EmployeeDao.xml"/>
  </mappers>
</configuration>

configuration(配置)

  • properties(属性)

  • settings(设置)

  • typeAliases(类型别名)

  • typeHandlers(类型处理器)

  • objectFactory(对象工厂)

  • plugins(插件)

  • environments(环境配置)
    environment(环境变量)
    transactionManager(事务管理器)
    dataSource(数据源)

  • databaseIdProvider(数据库厂商标识)

  • mappers(映射器)

     typeHandlers(类型处理器):
     我们不用管,他在项目中已经默认加上了
    

    在这里插入图片描述

     如果你想手动
     mybatis-config.xml(全局配置文件)中:
    
   <!-- 4.类型处理器作用 -->
      <typeHandlers>
            <!-- 自定义好的类型处理器就这杨配置上去就行 -->
            <typeHandler handler=""/>
      </typeHandlers>
objectFactory(对象工厂):
你在进行sql映射文件的时候,你只是使用了dao接口的方法(底层通过反射获得到方法),如果你要去调用这个返回值结果,你就要去创建对象,但是你并没有去做着一个工作就能使用,也就是因为mybatis底层使用了objectFactory对象工厂去做了这个动作

plugins(插件)

在这里插入图片描述

Mybatis四大对象:
Executor:执行器
        执行器就是来执行sql语句(就是执行增删改查操作的)
ParameterHandler:参数处理器
        就是我们把sql预编译好之后,往里面设置参数(他就是调用typeHandler对不同类型的参数进行编译)
ResultSetHandler:结果集处理器
        负责将查询出来的的结果集封装成我们的JavaBean对象或者什么其他对象(封装数据由他来做)
StatementHandler:就相当于原生的preparedStatement
        预编译sql语句

environments(环境配置)
<!-- environments配置环境,后来数据源和事务都是spring来做 -->
      <!--
            environment:配置一个具体环境,都需要一个事务管理器和一个数据源
            default="":默认使用的是哪一个环境;
            如果你要是用开发环境default="development"
            如果你要是用测试环境default="testEnv"
       -->
      <environments default="development">
            <!-- id="testEnv"是当前环境的唯一标识 -->
            <environment id="testEnv">
                  <transactionManager type=""/>
                  <dataSource type="">
                        <property name="driver" value="${driverclass}"/>
                    <property name="url"  value="jdbc:mysql://192.168.10.165:3306/mybatis_test"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                  </dataSource>
            </environment>
      </environments>

databaseIdProvider(数据库厂商标识)
mysql-config.xml:

<!-- databaseIdProvider:用来考虑数据库移植性的 -->
      <databaseIdProvider type="DB_VENDOR">
            <!-- name:数据库厂商表示      value:自己起一个好用的别名 -->
            <!-- MySQL ; Oracle ; SQL Server -->
            <property name="MySQL" value="mysql"/>
            <property name="Oracle" value="oracle"/>
            <property name="SQL Server" value="sqlserver"/>
      </databaseIdProvider>
      
EmployeeDao.xml:

<!-- 默认这个查询是不区分环境的 -->
      <select id="getEmpById" resultType="com.neu.bean.Employee">
            select * from t_employee where id = #{id}
      </select>
      
      <!-- 如果能精确匹配就精确匹配,不能就模糊的 -->
      <select id="getEmpById" resultType="com.neu.bean.Employee"  databaseId="mysql">
            select * from t_employee where id = #{id}
      </select>
      
      <select id="getEmpById" resultType="com.neu.bean.Employee"  databaseId="oracle">
            select * from t_employee where id = #{id}
      </select>
mappers(映射器)
<!-- 7.写好的sql映射文件需要使用mappers注册进来 -->
  <mappers>
      <!--
            class:直接引用接口的全类名
                        需要将xml(sql映射文件)文件和dao文件放到同一个目录下,而且xml文件名字要和dao名字相同
                        class的另一种用法
            resource:在类路径下找sql映射文件
            url:再磁盘或网络路径引用
       -->
       
      <!--  <mapper resource="mybatis/EmployeeDao.xml"/> -->
       <!-- <mapper class="com.neu.dao.EmployeeDao"/> -->
       <!-- <mapper class="com.neu.dao.EmployeeDaoAnnotation"/> -->
      <!-- <mapper resource="EmployeeDao.xml"/> -->
      <!-- 配合使用:重要的dao写配置
            简单的dao写注解
       -->
       
       <!-- 批量扫描     name:直接写扫描dao的包名 -->
      <package name="com.neu.dao"/>
  </mappers>
因为你批量扫描和你的class扫描一样,你sql映射文件他不知道要到哪一个xml文件,class的方法是将dao.xml放到和com.nue.dao包下让他俩同目录
另一种方法就是让config下创建一个一样名称的com.nue.dao包将xml文件放进去

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值