3-Mybatis全局配置文件

properties(属性)
settings(全局配置参数)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境集合属性对象)
			environment(环境子属性对象)
				transactionManager(事务管理)
				dataSource(数据源)
mappers(映射器)

properties:属性配置

配置属性方式1:

 <properties>
    <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
    <property name="jdbc.url" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="jdbc.username" value="root"/>
    <property name="jdbc.password" value="admin"/>
</properties>

引用属性:

<dataSource type="POOLED">
    <property name="driver" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</dataSource>

配置方式2:

将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加db.properties的属性值。
在mybatis-config.xml中就不需要对数据库连接参数硬编码。
将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。
db.properties资源文件:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
jdbc.username=root
jdbc.password=admin
<properties resource="db.properties"></properties>

注意: MyBatis 将按照下面的顺序来加载属性:
1.在 properties 元素体内定义的属性首先被读取。
2.然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
3.最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

建议:
不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。
在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

setting属性

mybatis框架在运行时可以调整一些运行参数。
比如:开启二级缓存、开启延迟加载。。
全局参数将会影响mybatis的运行行为。
常用配置:

 <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属性

在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。

如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。
方式1:给点个类型起别名

<typeAliases>
    <!--给单个类起别名-->
    <typeAlias type="com.qwy.bean.Users" alias="users"></typeAlias>
</typeAliases>

引用别名:

<insert id="saveUsers" parameterType="users">
    insert into users(username,password,age,sex,birthday)
    values
    (#{username},#{password},#{age},#{sex},#{birthday})
</insert>

方式2:通过扫描包方式

<typeAliases>
    <!--通过扫描包的方式起别名,别名就是类名(首字母不区分大小写)-->
    <package name="com.qwy.bean"/>
</typeAliases>

方式3:使用@Alias注解

@Alias("users")
public class Users {
}

注意需要通过方式的扫描方式才生效。

mybatis默认支持别名:

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal

typeHandlers(类型处理器)

mybatis中通过typeHandlers完成jdbc类型和java类型的转换。
通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义.
mybatis支持类型处理器:

类型处理器Java类型JDBC类型
BooleanTypeHandlerBoolean,boolean任何兼容的布尔值
ByteTypeHandlerByte,byte任何兼容的数字或字节类型
ShortTypeHandlerShort,short任何兼容的数字或短整型
IntegerTypeHandlerInteger,int任何兼容的数字和整型
LongTypeHandlerLong,long任何兼容的数字或长整型
FloatTypeHandlerFloat,float任何兼容的数字或单精度浮点型
DoubleTypeHandlerDouble,double任何兼容的数字或双精度浮点型
BigDecimalTypeHandlerBigDecimal任何兼容的数字或十进制小数类型
StringTypeHandlerStringCHAR和VARCHAR类型
ClobTypeHandlerStringCLOB和LONGVARCHAR类型
NStringTypeHandlerStringNVARCHAR和NCHAR类型
NClobTypeHandlerStringNCLOB类型
ByteArrayTypeHandlerbyte[]任何兼容的字节流类型
BlobTypeHandlerbyte[]BLOB和LONGVARBINARY类型
DateTypeHandlerDate(java.util)TIMESTAMP类型
DateOnlyTypeHandlerDate(java.util)DATE类型
TimeOnlyTypeHandlerDate(java.util)TIME类型
SqlTimestampTypeHandlerTimestamp(java.sql)TIMESTAMP类型
SqlDateTypeHandlerDate(java.sql)DATE类型
SqlTimeTypeHandlerTime(java.sql)TIME类型
ObjectTypeHandler任意 其他或未指定类型
EnumTypeHandlerEnumeration类型VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。

environments属性

mybatis可以配置多种环境 ,default指定使用某种环境。可以达到快速切换环境。
实例:

<environments default="dev_test">
    <environment id="dev_mydb">
        <!--配置事务管理器-->
        <transactionManager type="JDBC"/>
        <!--配置数据源-->
        <dataSource type="POOLED">
            <property name="driver" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </dataSource>
    </environment>
    <environment id="dev_test">
        <!--配置事务管理器-->
        <transactionManager type="JDBC"/>
        <!--配置数据源-->
        <dataSource type="POOLED">
            <property name="driver" value="${test.driver}"/>
            <property name="url" value="${test.url}"/>
            <property name="username" value="${test.username}"/>
            <property name="password" value="${test.password}"/>
        </dataSource>
    </environment>
</environments>

databaseIdProvider数据库生产商标识

作用就是得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql

 <databaseIdProvider type="DB_VENDOR">
    <!-- 为不同的数据库厂商起别名 -->
    <property name="MySQL" value="mysql"/>
    <property name="Oracle" value="oracle"/>
    <property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>

引用别名:

  <!--
      parameterType:使用别名
      databaseId:引用数据库的别名
    -->
    <insert id="saveUsers" parameterType="users" databaseId="mysql" >
        insert into users(username,password,age,sex,birthday)
        values
        (#{username},#{password},#{age},#{sex},#{birthday})
    </insert>

mappers属性
通过resource加载classpath路径下单个映射文件

<mappers>
    <!--加载映射文件信息-->
    <mapper resource="com/qwy/mapper/UsersMapper.xml"/>
</mappers>

通过代理接口方式加载

<mappers>
    <!--通过代理接口加载-->
    <mapper class="com.qwy.mapper.UsersMapper"></mapper>
</mappers>

通过url加载

<mappers>
    <!--加载本地磁盘的映射文件-->
    <mapper url="file:///mappers/UsersMapper.xml"></mapper>
</mappers>

通过扫描包方式:

<mappers>
    <!--通过扫描包方式加载-->
    <package name="com.qwy.mapper"/>
</mappers>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值