mybatis——属性文件、全局参数、别名、类型转换器、resultMap(二)

config.xml中的配置文件需要 按照顺序 不然就会报错

properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?

一.属性文件 配置数据库连接

1 . 创建 db.properties 文件

填写数据库连接信息

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssm?serverTimezone=GMT%2B8
username=root
password=root

2 . 导入 

<properties resource="db.properties" />

3 . 配置数据库信息

<dataSource type="POOLED">
    <property name="driver" value="${driver}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
</dataSource>

二 全局参数

<settings>
    <setting name="" value=""/>
</settings>

三 别名(使用别名后可以进行相关名字的替换)

<typeAliases>
    <!--单个设置别名-->
    <typeAlias type="com.xiaonuo.domain.Person" alias="Person"></typeAlias>
    <!--批量设置别名 别名就是不带前缀包名的类本来名字 忽略大小写-->
    <package name="com.xiaonuo.domain"></package>
</typeAliases>

四 类型转换器

本身有自带的类型转换器

这边记录下自定义的类型转换器

* 可以实现TypeHandler接口
* 或者选择继承实现他的BaseTypeHandler实现类

代码部分 把Boolean 转换成 varchar 

public class BooleanAndCharTypeHandler extends BaseTypeHandler<Boolean> {
    /*从Java(Boolean) -> JB(int)*/
    //true代表男
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Boolean aBoolean, JdbcType jdbcType) throws SQLException {
        if(aBoolean){
            preparedStatement.setString(i,"男");
        }
        else{
            preparedStatement.setString(i,"女");
        }
    }

    //根据列名拿
    @Override
    public Boolean getNullableResult(ResultSet resultSet, String s) throws SQLException {
        return resultSet.getString(s).equals("男") ? true : false ;
    }
    //根据下标拿
    @Override
    public Boolean getNullableResult(ResultSet resultSet, int i) throws SQLException {
        return resultSet.getString(i).equals("男") ? true : false ;
    }

    //存储过程拿
    @Override
    public Boolean getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        return callableStatement.getString(i).equals("男") ? true : false ;
    }
}

config.xml 添加自定义转换器

<!--自定义的类型转换器-->
<typeHandlers>
    <!--单个转换-->
    <typeHandler handler="com.xiaonuo.typeHandler.BooleanAndCharTypeHandler" javaType="Boolean" jdbcType="VARCHAR" />
</typeHandlers>

映射文件中添加

<!--如果数据库类型和类类型中能够精确识别 那么就使用 resultType 否则使用 resultMap-->
<!--如果数据库名字和类名字中能够精确识别 那么就使用 resultType 否则使用 resultMap-->

查询

<select id="selectAll" resultMap="selectIdMaper">
    select * from person
</select>
<resultMap id="selectIdMaper" type="Person">
    <id property="id" column="id"></id>
    <result property="name" column="name"></result>
    <result property="sex" column="sex" javaType="Boolean" jdbcType="VARCHAR"></result>
</resultMap>

插入

<insert id="insertStudent" parameterType="Person" keyProperty="id" useGeneratedKeys="true">
     insert into person values(#{id},#{name},#{sex,javaType=boolean , jdbcType = VARCHAR})
 </insert>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值