Mybatis -- MyBatis核心配置文件深入: typeHandlers标签(自定义类型转换器)、plugins标签(插件标签:扩展mybatis功能 分页助手)

Mybatis -- MyBatis核心配置文件深入: typeHandlers标签(自定义类型转换器)、plugins标签(插件标签:扩展mybatis功能 分页助手),第1张

Mybatis -- MyBatis核心配置文件深入: typeHandlers标签(自定义类型转换器)、plugins标签(插件标签:扩展mybatis功能 分页助手) 1. typeHandlers标签(自定义类型转换器


你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。具体做法为:实现org.apache.ibatis.type.TypeHandler接口,或继承一个很便利的类org.apache.ibatis.type.baseTypeHandler,然后可以选择性地将它映射到一个JDBC类型。


1.1 需求

例如需求:

一个Java中的Date数据类型,我想将之存到数据库的时候存成一个1970年至今的毫秒数,取出来时转换成java的Date,即java的Date与数据库的bigint毫秒值之间转换。


1.2 开发步骤


1.3 具体示例

自定义类型转换器:

DateTypeHandler.java

package com.itheima.handler;

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;
import java.util.Date;

public class DateTypeHandler extends baseTypeHandler {
    //将java类型 转换成 数据库需要的类型
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
        long time = date.getTime();
        preparedStatement.setLong(i,time);
    }

    //将数据库中类型 转换成java类型
    //String参数  要转换的字段名称
    //ResultSet 查询出的结果集
    public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
        //获得结果集中需要的数据(long) 转换成Date类型 返回
        long aLong = resultSet.getLong(s);
        Date date = new Date(aLong);
        return date;
    }

    //将数据库中类型 转换成java类型
    public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
        long aLong = resultSet.getLong(i);
        Date date = new Date(aLong);
        return date;
    }

    //将数据库中类型 转换成java类型
    public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        long aLong = callableStatement.getLong(i);
        Date date = new Date(aLong);
        return date;
    }
}

注册类型处理器:


SqIMapConfig.xml

    
    
        
    


2. plugins标签

准备工作 准备多条数据:


1.1 导入相关的坐标

pom.xml

    
        
        
            mysql
            mysql-connector-java
            8.0.25
        
        
        
            org.mybatis
            mybatis
            3.4.6
        
        
        
            junit
            junit
            4.13.2
        
        
        
            log4j
            log4j
            1.2.17
        
        
        
            com.github.pagehelper
            pagehelper
            3.7.5
        
        
        
            com.github.jsqlparser
            jsqlparser
            0.9.1
        
    

1.2 在mybatis核心配置文件中配置PageHelper插件

SqIMapConfig.xml

    
    
        
            
            
        
    


1.3 测试分页代码实现

sql:

测试代码:

MybatisTest.java

package com.tian.test;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.tian.dao.UserMapper;
import com.tian.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBatisTest {
    @Test
    public void test3() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("SqIMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //设置分页相关参数   当前页 + 每页显示的条数
        PageHelper.startPage(1, 3);

        List userList = mapper.findAll();
        for (User user : userList) {
            System.out.println(user);
        }

        //获得与分页相关参数
        PageInfo pageInfo = new PageInfo<>(userList);
        System.out.println("当前页:" + pageInfo.getPageNum());
        System.out.println("每页显示条数:" + pageInfo.getPageSize());
        System.out.println("总条数:" + pageInfo.getTotal());
        System.out.println("总页数:" + pageInfo.getPages());
        System.out.println("上一页:" + pageInfo.getPrePage());
        System.out.println("下一页:" + pageInfo.getNextPage());
        System.out.println("是否是第一页:" + pageInfo.isIsFirstPage());
        System.out.println("是否是最后一个一页:" + pageInfo.isIsLastPage());

        sqlSession.close();
    }
}

运行结果:


3. 小结

MyBatis核心配置文件常用标签:



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5118992.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存