zoukankan      html  css  js  c++  java
  • mybatis的TypeHandler 的使用

    今天看了别人的mybatis的教学视频,自己手写了一个简单的自定义的TypeHandler,有些细节记录一下。

    1、定义自己的TypeHandler,代码如下:

    package com.example.handler;
    
    import org.apache.ibatis.type.BaseTypeHandler;
    import org.apache.ibatis.type.JdbcType;
    import org.apache.ibatis.type.MappedJdbcTypes;
    
    import java.sql.CallableStatement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    @MappedJdbcTypes(JdbcType.VARCHAR)
    public class DrafireStringHandler extends BaseTypeHandler<String> {
        @Override
        public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
            preparedStatement.setString(i, "Drafire-" + s);
        }
    
        @Override
        public String getNullableResult(ResultSet resultSet, String s) throws SQLException {
            return resultSet.getString(s);
        }
    
        @Override
        public String getNullableResult(ResultSet resultSet, int i) throws SQLException {
            return resultSet.getString(i);
        }
    
        @Override
        public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
            return callableStatement.getString(i);
        }
    }

    2、配置mybatis-config.xml的位置,如下:

    server:
      port: 9001
    spring:
      datasource:
        name: test
        url: jdbc:mysql://127.0.0.1:3306/bank
        username: root
        password: 123456
      session:
        store-type: jdbc
    mybatis:
      mapper-locations: classpath:mapping/*.xml
      type-aliases-package: com.tuandai.model
      config-location: classpath:mybatis-config.xml    #一定要注明location的位置
      # default-store in spring session. it will be set in redis only outside.
    rabbit:
      connect:
        host: localhost
        port: 5672
        username: admin
        password: 123456
        channelCacheSize: 100

    3、定义一个mybatis-config.xml ,名字随意,代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <typeHandlers>
            <typeHandler handler="com.tuandai.handler.DrafireStringHandler"></typeHandler>
        </typeHandlers>
        <environments default="development">
            <environment id="sell">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="${ds.sell.driverClassName}"/>
                    <property name="url" value="${ds.sell.url}"/>
                    <property name="username" value="${ds.sell.username}"/>
                    <property name="password" value="${ds.sell.password}"/>
                </dataSource>
            </environment>
    
            <environment id="bank">
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="${ds.bank.driverClassName}"></property>
                    <property name="url" value="${ds.bank.url}"></property>
                    <property name="username" value="${ds.bank.username}"></property>
                    <property name="password" value="${ds.bank.password}"></property>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <!--<mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
        </mappers>
    </configuration>

    在这里有2个地方要注意,1、configuration里面的标签的顺序必须严格遵循以下顺序:

    properties>settings>typeAliases>typeHandlers>objectFactory>objectWrapperFactory>plugins>environments>databaseIdProvider>mappers,也就是properties必须放在第一位(如果有),并依次配置需要的标签。

    2、注册TypeHandler

    <typeHandlers>
            <typeHandler handler="com.example.handler.DrafireStringHandler"></typeHandler>
    </typeHandlers>
  • 相关阅读:
    文佳夹之删除
    猜谜小游戏
    python小知识点
    【bzoj4516】[Sdoi2016]生成魔咒 后缀数组+倍增RMQ+STL-set
    【bzoj3362/3363/3364/3365】[Usaco2004 Feb]树上问题杂烩 并查集/树的直径/LCA/树的点分治
    【poj1741】Tree 树的点分治
    【bzoj2946】[Poi2000]公共串 后缀数组+二分
    【bzoj2157】旅游 树链剖分+线段树
    【bzoj2743】[HEOI2012]采花 树状数组
    【bzoj2705】[SDOI2012]Longge的问题 欧拉函数
  • 原文地址:https://www.cnblogs.com/drafire/p/9772365.html
Copyright © 2011-2022 走看看