properties(属性)
这些属性可以在外部进行配置,并可以进行动态替换。
<!-- 引入对应properties文件,可以使用EL表达式的方式读取属性文件的信息-->
<!-- PropertyParser 类里面找-->
<properties resource="application.properties">
<!-- 是否指定设置默认值-->
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/>
<!-- 设置默认分隔符 将原有的 :号改为了 value的符号-->
<property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?"/>
</properties>
settings(设置)
<!--决定Mybatis的硬性条件-->
<settings>
<!-- 是否开启缓存-->
<setting name="cacheEnabled" value="true"/>
<!--是否开启延迟加载-->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 日志类型-->
<setting name="logImpl" value="SLF4j"/>
<!--是否自动生成主键-->
<setting name="useGeneratedKeys" value="false"/>
</settings>
typeAliases(类型别名)
<!-- 设置映射条件类型(主要定义别名)-->
<typeAliases>
<!-- 方法二:这里定义包,在实体类中定义注释 @Alias("别名")-->
<package name="commons.entity"/>
<package name="app.mapper.TypeHandier"/>
<!-- 方法一: -->
<!-- <typeAlias type="commons.entity.Student" alias="Student"/>-->
</typeAliases>
typeHandlers(类型处理器)
具体做法为:继承一个很便利的类 org.apache.ibatis.type.BaseTypeHandler
public class PointTypeHandier extends BaseTypeHandler<Point> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, Point point, JdbcType jdbcType) throws SQLException {
String pointt=point.getX()+","+point.getY();
preparedStatement.setString(i,pointt);
}
@Override
public Point getNullableResult(ResultSet resultSet, String s) throws SQLException {
String point=resultSet.getString(s);
String[] split = point.split(",");
return new Point(Integer.parseInt(split[0]),Integer.parseInt(split[1]));
}
@Override
public Point getNullableResult(ResultSet resultSet, int i) throws SQLException {
String point=resultSet.getString(i);
String[] split = point.split(",");
return new Point(Integer.parseInt(split[0]),Integer.parseInt(split[1]));
}
@Override
public Point getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
return null;
}
<typeHandlers>
<typeHandler handler="PointTypeHandier" javaType="Point" jdbcType="VARCHAR"/>
</typeHandlers>
objectFactory(对象工厂)
public class CustomObjectFactory extends DefaultObjectFactory {
@Override
public <T> T create(Class<T> type) {
System.out.println("当前创建:"+type.getName());
return super.create(type);
}
}
<objectFactory type="app.mapper.of.CustomObjectFactory"></objectFactory>