Mybatis全局配置文件

入门
传统方式:
获取sqlSessionFactory对象
获取sqlSession对象
sqlSession直接调用自有的api,如sqlSession.select,insert,update

接口式编程:
获取sqlSessionFactory对象
获取sqlSession对象
获取接口的实现类对象
用接口实现类调用相应的方法

原生 : dao -----> daoImpl
mybatis: Mapper ---->xxxMapper.xml

SqlSession代表和数据库的一次会话,用完必须关闭,SqlSession和Connection一样都是线程非安全的,每次使用都应该重新获取。
Mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。(将接口和xml绑定)

mybatis的两个重要文件:
全局配置文件:mybatis-config.xml,用于配置数据库,事务等系统属性
sql映射文件:保存每一个sql语句的映射信息

XML文件中提示信息绑定,有时候XML文件提示没有,需要手动关联
在这里插入图片描述

在联网状态下可以直接点击红框中的dtd地址,下载相应的dtd文件,在Eclipse中设置相应的属性,如图所示,设置好之后应用,关闭相应的xml文件之后再重新打开。

在这里插入图片描述
在这里插入图片描述

mybatis-config.xml全局配置文件:
properties标签:引入外部properties配置文件内容
resource:引入类路径下的资源
url:引入网络路径或磁盘路径下的资源
settings:http://www.mybatis.org/mybatis-3/zh/configuration.html#settings

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

typeAliases:
在这里插入图片描述

typeHandlers:类型处理器
plugins:插件

environments:环境配置,type中的属性都是别名,对应的有相应的实现类,可以在mybatis中的Configuration配置类中找到相应的对应类

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC">
      <property name="..." value="..."/>
    </transactionManager>
    <dataSource type="POOLED">
      <property name="driver" value="${driver}"/>
      <property name="url" value="${url}"/>
      <property name="username" value="${username}"/>
      <property name="password" value="${password}"/>
    </dataSource>
  </environment>
</environments>

默认使用的环境 ID(比如:default=“development”)。
每个 environment 元素定义的环境 ID(比如:id=“development”)。
事务管理器的配置(比如:type=“JDBC”,type可以为JDBC和MANAGED,一般都是用JDBC)。
数据源的配置(比如:type=“POOLED”,type可以为UNPOOLED,POOLED,JNDI ,一般使用POOLED)。

databaseIdProvider:数据库厂商标识
MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性,在Mapper.xml文件中使用databaseId 指定使用哪种数据库。
在Mybatis中实现多个数据库版本切换,首先需要在mybatis-config.xml文件中设置databaseIdProvider,以及数据库环境,如果和Spring结合则Spring会为其提供,为不同的数据库设置相应的别名,如果不设置则是默认的。然后在Mapper对应的xml文件中为不同的数据库协商相应的sql,并明确指定databaseId。当需要使用不同的数据库时,只需要在环境配置的时候启用相应的数据库配置,Mybatis会加载带了指定databaseId的SQl和不带databaseId的sql,但是会精确匹配,比如当前使用的是Mysql数据库,Mapper文件中写了三个sql,一个指定oracle,一个指定mysql,一个没有指定,那么会加载mysql和没有指定的,但会匹配上制定了Mysql的sql。

<databaseIdProvider type="DB_VENDOR">
  <property name="SQL Server" value="sqlserver"/>
  <property name="DB2" value="db2"/>
  <property name="Oracle" value="oracle" />
</databaseIdProvider>

<select id="findLectureById" parameterType="int" resultMap="lectureMap" databaseId="mysql">
		select id,lecture_name,note from t_lecture where id=#{id}
</select>
<select id="findLectureById" parameterType="int" resultMap="lectureMap" databaseId="oracle">
select id,lecture_name,note from t_lecture where id=#{id}
</select>

mappers:映射器

<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
  <mapper url="file:///var/mappers/BlogMapper.xml"/>
  <mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

使用接口映射的形式必须将其sql映射文件xml放在与接口定义的位置相同的地方,并且xml的名称与接口的名称需要一样,除了文件后缀。除了上述配置外,还可以使用注解的方式绑定接口与sql的映射关系。注解使用就无需编写SQL映射的xml文件,使用来注册。如在接口中定义了相应的抽象方法,可以在方法上加上注解@Select(sql语句),@Insert(sql语句),推荐使用sql映射文件。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值