mybatis入门学习(三)-属性文件、别名、类型转换、resultMap

前面的相关文章:
1、mybatis入门学习(一)-配置及示例
2、mybatis入门学习(二)-基于接口的动态代理

配置属性文件

1、在 mybatis 原本的 config 配置文件内容如下:
在这里插入图片描述
2、将 config 文件的 property 标签中的 value 属性提取出来,新建一个 db.properties 文件,内容如下(key-value):
在这里插入图片描述
3、修改config文件,新增 properties 标签并引入 db.properties 文件;在 propert标签的 value 属性输入 ${key}
在这里插入图片描述

配置别名

1、单个文件配置别名;如下图红框所示:为 com.mybatis.slq.entity.Person 定义一个别名为 persontypeAlias 可以有多个。
在这里插入图片描述
配置别名后,在使用到 com.mybatis.slq.entity.Person 的地方就可以用 person 替代
在这里插入图片描述
2、为包中的类批量配置别名
在这里插入图片描述
typeAliases 中添加 pakage 标签 name 值为包名完整路径。在这个包中的所有类的别名为该类的类名且不区分大小写

类型处理器

1、自定义类型处理器
Person 表新增一个 sex(bit) 字段 ,当查询该字段时将 bit 类型转换为 String 类型
定义一个继承 BaseTypeHandlerBitToStringTypeHandler

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 文件
在这里插入图片描述
方式二:
在这里插入图片描述
若已配置 BitToStringTypeHandler 的别名,直接在需转换字段中添加 typeHandler=BitToStringTypeHandler


版权声明:本文为weixin_43520586原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。