mybatis入门学习(三)-属性文件、别名、类型转换、resultMap
配置属性文件
1、在 mybatis 原本的 config 配置文件内容如下:
2、将 config 文件的 property 标签中的 value 属性提取出来,新建一个 db.properties 文件,内容如下(key-value):
3、修改***config*** 文件,新增 properties 标签并引入 db.properties 文件;在 ***propert***y 标签的 value 属性输入 ${key}
配置别名
1、单个文件配置别名;如下图红框所示:为 com.mybatis.slq.entity.Person 定义一个别名为 person 。typeAlias 可以有多个。
配置别名后,在使用到 com.mybatis.slq.entity.Person 的地方就可以用 ***person***替代
2、为包中的类批量配置别名
在 typeAliases 中添加 pakage 标签 name 值为包名完整路径。在这个包中的所有类的别名为该类的类名且不区分大小写
类型处理器
1、自定义类型处理器
Person 表新增一个 sex(bit) 字段 ,当查询该字段时将 bit 类型转换为 String 类型
定义一个继承 BaseTypeHandler 的 BitToStringTypeHandler 类
package com.mybatis.slq.convertor;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*类型转换器:将数据库 bit 类型转换为 java String 类型
*/
public class BitToStringTypeHandler extends BaseTypeHandler<String> {
/**
* 寫入數據時 String 轉換為 bit
* @param preparedStatement
* @param i
* @param s
* @param jdbcType
* @throws SQLException
*/
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
if ("男".equals(s)){
preparedStatement.setInt(i,1);
}else{
preparedStatement.setInt(i,0);
}
}
/**
* 讀取數據時 根據字段名讀取數據
* @param resultSet
* @param s
* @return
* @throws SQLException
*/
@Override
public String getNullableResult(ResultSet resultSet, String s) throws SQLException {
int sex=resultSet.getInt(s);
return 1==sex ? "男" : "女";
}
/**
* 讀取數據時 根據字段索引讀取數據
* @param resultSet
* @param i
* @return
* @throws SQLException
*/
@Override
public String getNullableResult(ResultSet resultSet, int i) throws SQLException {
int sex=resultSet.getInt(i);
return 1==sex ? "男" : "女";
}
/**
* 存儲過程返回值 根據字段索引讀取數據
* @param callableStatement
* @param i
* @return
* @throws SQLException
*/
@Override
public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
int sex=callableStatement.getInt(i);
return 1==sex ? "男" : "女";
}
}
1、当需转换字段为结果集时:
方式一:
原 mapper 为:
修改后为:
config文件配置:
方式二:
为 com.mybatis.slq.convertor.BitToStringTypeHandler 配置别名
mapper改为:
通过 typeHandler 直接指向 com.mybatis.slq.convertor.BitToStringTypeHandler
当需转换字段为参数时
方式一:
原 mapper
修改后为:
在需转换字段中添加 javaType=String ,jdbcType=BIT ;配置 config 文件
方式二:
直接在需转换字段中添加 typeHandler=BitToStringTypeHandler