Mybatis-Configuration(一)

Properties(属性)

1. Properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456

2. properties(属性)

<!--
	mybatis可以使用properties来引入外部properties配置文件的内容;
	resource:引入类路径下的资源
	url:引入网络路径或者磁盘路径下的资源
-->
<properties resource="dbconfig.properties"></properties>

3. 如果属性在不只一个地方进行了配置,那么MyBatis将按照下面的顺序来加载

  • 在properties元素体内指定的属性首先被读取。
  • 然后根据properties元素中的 resource 属性读取类路径下属性文件或根据url属性指定的路径读取属性文件,将覆盖已读取的同名属性。
  • 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。
  • 总结之,通过方法参数传递的属性的优先级最高resource 或 url 指定的属性优先级中等,在 properties 元素体中指定的属性优先级最低

Settings(设置)

<!-- 
    settings包含很多重要的设置项
    setting:用来设置每一个设置项
    name:设置项名
    value:设置项取值
-->
<settings>
	<!-- 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存 -->
    <setting name="cacheEnabled" value="true"/>
	<!-- 延迟加载的全局开关 -->
    <setting name="lazyLoadingEnabled" value="true"/>
	<!-- 是否允许单个语句返回多结果集(需要数据库驱动支持) -->
    <setting name="multipleResultSetsEnabled" value="true"/>
	<!-- 使用列标签代替列名。实际表现依赖于数据库驱动 -->
    <setting name="useColumnLabel" value="true"/>
	<!-- 允许 JDBC 支持自动生成主键,需要数据库驱动支持。 -->
    <setting name="useGeneratedKeys" value="false"/>
	<!-- 
		是否开启驼峰命名自动映射
		即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn
	-->
    <setting name="mapUnderscoreToCamelCase" value="false"/>
</settings>

TypeAliases(类型别名)

<!-- 
	typeAliases:别名处理器
	可以为我们的java类型起别名,别名不区分大小写
-->
<typeAliases>

	<!-- 1、typeAlias:为某个java类型起别名
		type:指定要起别名的类型全类名;默认别名就是类名小写;employee
		alias:指定新的别名
	-->
    <typeAlias type="com.my.mybatis.bean.Employee" alias="emp"/> -->
		
	<!-- 2、package:为某个包下的所有类批量起别名 , 结合@Alias注解为某个类型指定新的别名
		name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写))
	-->
	<package name="com.my.mybatis.bean"/>

</typeAliases>
@Alias("author")
public class Author {
    ...
}
  • 已存在别名,不可使用

TypeHandlers(类型处理器)

1. typeHandlers(类型处理器)

<!-- 用类型处理器将获取到的值以合适的方式转换成java类型 -->
<typeHandlers>

	<!-- java.time.LocalDateTime <=> TIMESTAMP -->
	<typeHandler handler="org.apache.ibatis.type.LocalDateTimeTypeHandler"/>
	<!-- java.time.LocalDate <=> DATE -->
	<typeHandler handler="org.apache.ibatis.type.LocalDateTypeHandler"/>
	<!-- java.time.LocalTime <=> TIME -->
	<typeHandler handler="org.apache.ibatis.type.LocalTimeTypeHandler"/>

</typeHandlers>

2. 自定义类型处理器

  • 实现 org.apache.ibatis.type.TypeHandler 接口
  • 或继承一个很便利的类 org.apache.ibatis.type.BaseTypeHandler
// ExampleTypeHandler.java
@MappedJdbcTypes(JdbcType.VARCHAR)
public class ExampleTypeHandler extends BaseTypeHandler<String> {

	@Override
	public void setNonNullParameter(PreparedStatement ps, int i, 
			String parameter, JdbcType jdbcType) throws SQLException {
		ps.setString(i, parameter);
	}

	@Override
	public String getNullableResult(ResultSet rs, String columnName) 
			throws SQLException {
		return rs.getString(columnName);
	}

	@Override
	public String getNullableResult(ResultSet rs, int columnIndex) 
			throws SQLException {
		return rs.getString(columnIndex);
	}

	@Override
	public String getNullableResult(CallableStatement cs, int columnIndex) 
			throws SQLException {
		return cs.getString(columnIndex);
	}
}
  •  mybatis-config.xml
<typeHandlers>
  <typeHandler handler="org.mybatis.example.ExampleTypeHandler"/>
</typeHandlers>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值