• MyBatis核心配置文件


    1.1 typeHandlers标签
    无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用
    类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器(截取部分)。

    你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。具体做法为:实现
    org.apache.ibatis.type.TypeHandler 接口, 或继承一个很便利的类 org.apache.ibatis.type.BaseTypeHandler, 然
    后可以选择性地将它映射到一个JDBC类型。例如需求:一个Java中的Date数据类型,我想将之存到数据库的时候存成一
    个1970年至今的毫秒数,取出来时转换成java的Date,即java的Date与数据库的varchar毫秒值之间转换。
    开发步骤:
    ① 定义转换类继承类BaseTypeHandler<T>
    ② 覆盖4个未实现的方法,其中setNonNullParameter为java程序设置数据到数据库的回调方法,getNullableResult
    为查询时 mysql的字符串类型转换成 java的Type类型的方法
    ③ 在MyBatis核心配置文件中进行注册
    ④ 测试转换是否正确

    public class DateTypeHandler extends BaseTypeHandler<Date> {
        //将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;
        }
    }
        <!--注册类型处理器-->
        <typeHandlers>
            <typeHandler handler="com.itheima.handler.DateTypeHandler"></typeHandler>
        </typeHandlers>

    1.2 plugins标签

    MyBatis可以使用第三方的插件来对功能进行扩展,分页助手PageHelper是将分页的复杂操作进行封装,使用简单的方式即
    可获得分页的相关数据
    开发步骤:
    ① 导入通用PageHelper的坐标
    ② 在mybatis核心配置文件中配置PageHelper插件
    ③ 测试分页数据获取

    ① 导入通用PageHelper坐标

            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>3.7.5</version>
            </dependency>
            <dependency>
                <groupId>com.github.jsqlparser</groupId>
                <artifactId>jsqlparser</artifactId>
                <version>0.9.1</version>
            </dependency>

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

        <!--配置分页助手插件-->
        <plugins>
            <plugin interceptor="com.github.pagehelper.PageHelper">
                <property name="dialect" value="mysql"></property>
            </plugin>
        </plugins>

    ③ 测试分页代码实现

        @Test
        public void test3() throws IOException {
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
            //设置分页相关参数   当前页+每页显示的条数
            PageHelper.startPage(2,3);
    
            List<User> userList = mapper.findAll();
            for (User user : userList) {
                System.out.println(user);
            }
    
            //获得与分页相关参数
            PageInfo<User> pageInfo = new PageInfo<User>(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();
        }

    1.3 知识小结
    MyBatis核心配置文件常用标签:
    1、properties标签:该标签可以加载外部的properties文件
    2、typeAliases标签:设置类型别名
    3、environments标签:数据源环境配置标签
    4、typeHandlers标签:配置自定义类型处理器
    5、plugins标签:配置MyBatis的插件

  • 相关阅读:
    Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(一)
    Centos7网络配置——设置固定ip
    Fiddler扩展——自定义列数据&Tunnel to 443解决办法
    Jmeter二次开发——自定义函数
    net5学习笔记---依赖注入
    Spring Cloud Alibaba系列之分布式服务组件Dubbo
    Spring5.0源码学习系列之事务管理概述
    C# 无需管理员权限提示,操作C盘文件
    WPF 屏幕点击的设备类型
    WPF Button MouseDown事件
  • 原文地址:https://www.cnblogs.com/ganxiang/p/15914901.html
Copyright © 2020-2023  润新知