2020-12-08

加油打卡(分享三个工具类)

工具类使代码简洁,减少了不必要的重复代码现象,对程序员很友好
第一个是创建SqlSession对象的工具类,这里需要添加一个jar包才可以使用:
在这里插入图片描述

package com.itheima.util;


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 java.io.IOException;
import java.io.InputStream;

public class MyBatisUtil {

    private static SqlSessionFactory factory;

    static {
        try {
        //获取核心配置文件中的流对象
            InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
            //创建工厂对象
            factory = new SqlSessionFactoryBuilder().build(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//返回SqlSession
    public static SqlSession getSqlSession() {
        return factory.openSession();
    }
}

第二个是基于第一种的一个扩展,通过动态代理方式创建mapper对象,也需要引用一个jar包:
在这里插入图片描述

package com.itheima.util;

import org.apache.ibatis.session.SqlSession;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class MapperFactory {


    public static <T> T getMapper(Class<T> clazz) {

        //2.希望采用动态代理对mapper进行增强, 加上两个步骤
        T proxyStudentDao = (T) Proxy.newProxyInstance(clazz.getClassLoader(), new Class[]{clazz}, new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                //1.获取到弱鸡对象
                SqlSession sqlSesion = MyBatisUtil.getSqlSession();
                T mapper = sqlSesion.getMapper(clazz);
                //先让弱鸡进行调用
                Object invoke = method.invoke(mapper, args);
                //提交事务
                sqlSesion.commit();
                //关闭资源
                sqlSesion.close();
                return invoke;
            }
        });
        return proxyStudentDao;
    }
}

通过反射的方式调用实现类对象的方法,使用方式例如:
在这里插入图片描述
第三个是时间参数类型转换的工具类,需要jar包:
在这里插入图片描述

package com.itheima.util;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TimeConvertUtil {

    private TimeConvertUtil(){}

    public static void timeConvert(){
        ConvertUtils.register(new Converter() {
            @Override
            public  Object convert(Class aClass, Object o) {
                String time = (String) o;
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    Date date = sdf.parse(time);
                    return date;
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                return null;
            }
        }, Date.class);

    }
}

使用只需要将TimeConvertUtil.timeConvert();写在封装过程之上即可(图中封装过程为BeanUtils.populate(stu,map)😉

在这里插入图片描述

如果在网上搜不到的jar包的,可以在这里找https://mvnrepository.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值