mybatis mysql 配置文件详解_5.MyBatis 全局配置文件详解(sqlMapConfig.xml)

1.1Mybatis的全局配置文件

SqlMapConfig.xml是mybatis的全局配置文件。它的名称可以是任意命名的。

1.1.1配置内容

SqlMapConfig.xml的配置内容和顺序如下(顺序不能乱):

Properties(属性)

Settings(全局参数设置)

typeAliases(类型别名)

typeHandlers(类型处理器)

objectFactory(对象工厂)

plugins(插件)

environments(环境信息集合)

environment(单个环境信息)

transactionManager(事物)

dataSource(数据源)

mappers(映射器)

1.1.2内容详解

1.1.2.1Properties

SqlMapConfig.xml文件中可以引用java属性文件中的配置信息

Java配置信息如下:

db.driver=com.mysql.jdbc.Driver

db.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8

db.username=root

db.password=root

SqlMapConfig.xml使用properties标签后,如下所示:

使用${},可以引用已经加载的java配置文件中的信息

注意:mybatis将按照下面的顺序加载属性:Properties标签体内定义的属性首先被读取

Properties引用的属性会被读取,如果发现上面已经有同名的属性了,那后面会覆盖前面的值

parameterType接收的值会最后被读取,如果发现上面已经有同名的属性了,那后面会覆盖前面的值

所以说,mybatis读取属性的顺序由高到低分别是:parameterType接收的属性值、properties引用的属性、properties标签内定义的属性。

settings设置

这是MyBatis修改操作运行过程细节的重要的步骤。下方这个表格描述了这些设置项、含义和默认值。

设置项描述允许值默认值

cacheEnabled对在此配置文件下的所有cache  进行全局性开/关设置。true | falsetrue

lazyLoadingEnabled全局性设置懒加载。如果设为‘false’,则所有相关联的都会被初始化加载。true | falsetrue

aggressiveLazyLoading当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。true | falsetrue

multipleResultSetsEnabled允许和不允许单条语句返回多个数据集(取决于驱动需求)true | falsetrue

useColumnLabel使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档,或者用这两个不同的选项进行测试一下。true | falsetrue

useGeneratedKeys允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。true | falsefalse

autoMappingBehavior指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,没有嵌套的结果。FULL 将自动映射所有复杂的结果。NONE,

PARTIAL,

FULLPARTIAL

defaultExecutorType配置和设定执行器,SIMPLE  执行器执行其它语句。REUSE  执行器可能重复使用prepared  statements 语句,BATCH执行器可以重复执行语句和批量更新。SIMPLE

REUSE

BATCHSIMPLE

defaultStatementTimeout设置一个时限,以决定让驱动器等待数据库回应的多长时间为超时正整数Not Set

(null)

例如:

Xml代码b3ef19c83a7592458b21fcc310c6732b.png

typeAliases类型别名

类型别名是Java 类型的简称。

它仅仅只是关联到XML 配置,简写冗长的JAVA 类名。例如:

Xml代码  b3ef19c83a7592458b21fcc310c6732b.png

使用这个配置,“StudentEntity”就能在任何地方代替“com.manager.data.model.StudentEntity”被使用。

对于普通的Java类型,有许多内建的类型别名。它们都是大小写不敏感的,由于重载的名字,要注意原生类型的特殊处理。

别名映射的类型

_bytebyte

_longlong

_shortshort

_intint

_integerint

_doubledouble

_floatfloat

_booleanboolean

stringString

byteByte

longLong

shortShort

intInteger

integerInteger

doubleDouble

floatFloat

booleanBoolean

dateDate

decimalBigDecimal

bigdecimalBigDecimal

objectObject

mapMap

hashmapHashMap

listList

arraylistArrayList

collectionCollection

iteratorIterator

typeHandlers类型句柄

无论是MyBatis在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处理器被用来将获取的值以合适的方式转换成Java类型。下面这个表格描述了默认的类型处理器。

类型处理器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类型

ObjectTypeHandlerAny其他或未指定类型

EnumTypeHandlerEnumeration类型VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。

你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。要这样做的话,简单实现TypeHandler接口(org.mybatis.type),然后映射新的类型处理器类到Java类型,还有可选的一个JDBC类型。然后再typeHandlers中添加这个类型处理器。

新定义的类型处理器将会覆盖已经存在的处理Java的String类型属性和VARCHAR参数及结果的类型处理器。要注意MyBatis不会审视数据库元信息来决定使用哪种类型,所以你必须在参数和结果映射中指定那是VARCHAR类型的字段,来绑定到正确的类型处理器上。这是因为MyBatis直到语句被执行都不知道数据类型的这个现实导致的。

Java代码  b3ef19c83a7592458b21fcc310c6732b.pngpublic class LimingStringTypeHandler implements TypeHandler {

@Override

public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {

System.out.println("setParameter - parameter: " + ((String) parameter) + ", jdbcType: " + jdbcType.TYPE_CODE);

ps.setString(i, ((String) parameter));

}

@Override

public Object getResult(ResultSet rs, String columnName) throws SQLException {

System.out.println("getResult - columnName: " + columnName);

return rs.getString(columnName);

}

@Override

public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {

System.out.println("getResult - columnIndex: " + columnIndex);

return cs.getString(columnIndex);

}

}

在配置文件的typeHandlers中添加typeHandler标签。

Xml代码  b3ef19c83a7592458b21fcc310c6732b.png

mappers

映射器的配置有四种方式

1

使用相对于类路径的资源

如:

2

使用完全限定路径

如:

3

使用mapper接口的全限定名

如:

注意:此种方法要求mapper接口和mapper映射文件要名称相同,且放到同一个目录下;

4(推荐)

注册指定包下的所有映射文件

如:

注意:此种方法要求mapper接口和mapper映射文件要名称相同,且放到同一个目录下;

原文:http://liuzedong.blog.51cto.com/8906170/1663830

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值