SSM框架之_Mybatis入门笔记,深入理解(三):配置解析篇

配置解析


核心配置文件

mybatis-config.xml

配置文件中能配置的内容:配置顺序不对会报错

configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
<!-- 注意元素节点的顺序!顺序不对会报错 -->

环境配置(environments)

  • 配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,必须指定其中一个为默认运行环境(通过default指定)
  • 子元素节点:environment
<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>

  • transactionManager:事务管理器,mybatis中由两种事务管理器,JDBC和MANAGED。

    • JDBC:直接使用了 JDBC 的提交和回滚设施,依赖从数据源获得的连接来管理事务作用域。
    • MANAGED :由于一些老的技术,spring已经不用这个了。

    使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。

  • dataSource:数据源,有三种数据源类型

    • UNPOOLED:不用连接池,每次请求都会打开和关闭数据库连接。
    • POOLED:使用连接池
    • JNDI:EJB用的,现在用的少

Mybatis的默认事务管理器就是JDBC,连接池:POOLED


属性(properties)

配置属性,可以通过加载外部文件配置,也可以mybatis配置文件中配置。

示例:创建外部配置文件(properties类型)

注意:配置时,属性值不需要加双引号,并且之前在配置文件中&的转义字符&amp;也可以直接写成&

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
username=root
password=123456

在配置mybatis配置文件中加载

<configuration>
   <!--导入properties文件-->
   <properties resource="db.properties"/>

   <environments default="development">
       <environment id="development">
           <transactionManager type="JDBC"/>
           <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>
</configuration>

在mybatis配置文件中配置

<properties resource="db.properties">
	<property name="username" value="root"/>
  	<property name="password" value="1234"/>
</properties>

如果同时在外部文件和mybatis配置文件中都配置的话,以外部文件配置为主,外部配置文件优先级更高。


映射器(mappers)

定义映射SQL语句文件。

四种引入资源的方式:

  • 相对于类路径的资源引用,引入mapper.xml文件(实现接口的文件),通过斜杠分隔
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
</mappers>
  • 完全限定资源定位符(URL),不使用
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
  • 映射器接口实现类的完全限定类名,通过点分割

    需要接口类和配置文件名一致,并且位于同一目录下

<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>
  • 将包内的映射器接口实现全部注册为映射器

    需要接口类与配置文件名一致,并且位于同一目录下

<mappers>
    <package name="org.mybatis.builder"/>
</mappers>

字标签:mapper

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--绑定接口-->
<mapper namespace="top.jarvaniv.dao.UserMapper">
</mapper> 

namespace:命名空间

  • 必须与某个接口名相同
  • 接口中的方法名与映射文件中sql语句的id一一对应,且id值保证唯一
  • 命名规则:包名+接口名

类型别名(typeAliases)

  • 第一种方式

使用格式:

<typeAliases>
  <typeAlias alias="别名" type="某个类的具体路径"/>
    <!-- 例如: -->
  <typeAlias alias="Blog" type="domain.blog.Blog"/>
</typeAliases>

之后,便可以在任何地方用Blog代替domain.blog.Blog,实现相同的效果。

  • 第二种方式

    指定包名,改包下面的所有需要的javaBean,都会有一个默认别名,默认别名的格式是:类名首字母小写。

    <typeAliases>
       <package name="com.kuang.pojo"/>
    </typeAliases>
    

    如果这个包下有一个javaBean,名字是UserList,那么她的别名就是userList。

  • 注解的形式

可以直接给javaBean(实体类)添加注解,设置别名:

@Alias("user")
public class User {
  ...
}

注释形式不受第二种方式的限制,即使设置了包名,如果有注解,则注解的优先级高于第二种形式。

java类型内建的类型别名,不区分大小写。

八大基本类型:在开头+_

image-20201028195213301

封装类:首字母小写

image-20201028195309651


设置

完整的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>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值