优化:
1.可以将配置信息单独放入 db.properties文件中,然后在动态引入
db.properties:
k=v;
<configuration>
<properties resource="db.properties"/>
引入之后,使用${key};
2.MyBatias全局参数,在config.xml设置
<settings>
<setting name="" value=""/>
</settings>
3.别名
a.设置单个别名
b.设置批量别名
<!-- 设置别名(忽略大小写) -->
<typeAliases>
<!-- 单个 -->
<typeAlias type="com.user.Student" alias="student"/>
<!-- 批量 ,以下会自动将该包中的所有类批量定义别名,别名就是类名-->
<package name="com.user"/>
</typeAliases>
处理自定义别名外,Mybatias还内置了一些常见类的别名
类型处理器(类型转换器)
1.MyBatis自带一些常见的类型处理器
2.自定义Mybatias类型处理器
java-数据库(jdbc类型)
实例:
实体类Student:boolean stuSex(true:男;false:女)
表student: number stuSex(1:男;0:女)
自定义类型转换器(boolean - number)步骤:
a.创建转换器
需要实现TypeHandler接口(有个实现类BaseTypeHandler)
package com.converter;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
public class BoolAndIntConverter extends BaseTypeHandler<Boolean> {
/*
* i:PreparedStatement对象操作参数的位置
* parameter:java的值
* jdbcType:jdbc操作的数据库类型
*/
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbcType)
throws SQLException {
if(parameter) {
ps.setInt(i, 1);
}else {
ps.setInt(i, 0);
}
}
@Override
public Boolean getNullableResult(ResultSet rs, String columnName) throws SQLException {
int sexNum = rs.getInt(columnName);
return sexNum==1?true:false;
}
@Override
public Boolean getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
int sexNum = rs.getInt(columnIndex);
return sexNum==1?true:false;
}
@Override
public Boolean getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
int sexNum = cs.getInt(columnIndex);
return sexNum==1?true:false;
}
}
b.配置config.xml
c.配置mapper.xml
需要注意的问题:需要大写INTEGER