mybaits 使用typeHandler实现日期类型的转换

一.typeHandler类型

二.使用typeHandler实现自定义转换类型

2.1  配置文件编写添加,查询语句

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!-- <mapper namespace="yonghuMapper">  -->
<mapper namespace="com.mybaits.demo.dao.OrgMapper">

    <!-- 添加-->
    <insert id="addOrg" parameterType="com.mybaits.demo.bean.Org">
        insert into tb_org(id,org_name,create_time) values(#{id},#{orgName},#{createTime})
    </insert>
    <!-- 查询-->
    <select id="findAllOrg" resultType="com.mybaits.demo.bean.Org">
        select id,org_name orgName,create_time createTime from tb_org
    </select>


</mapper>

 

2.2 自定义日期转换类

package com.mybaits.demo.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.text.SimpleDateFormat;
import java.util.Date;

/**
 * @ClassName: DataTypeTransfer
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/01/31 16:03:30 
 * @Version: V1.0
 **/
public class DataTypeTransfer 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);
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str=simpleDateFormat.format(date);

        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;
    }

}

2.3 在配置文件中注册类型转换器

 

2.4 编写dao层mapper

package com.mybaits.demo.dao;

import com.mybaits.demo.bean.Org;

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

public interface OrgMapper {
    void  addOrg(Org org);
    List<Org> findAllOrg() throws IOException;
}

2.5 编写service层

1.service接口

public interface OrgService {
   void addOrg(Org org) throws IOException;
   List<Org> findByIds() throws IOException;
}

2.service的实现层

package com.mybaits.demo.service.impl;

import com.mybaits.demo.bean.Org;
import com.mybaits.demo.bean.User;
import com.mybaits.demo.dao.OrgMapper;
import com.mybaits.demo.dao.UserMapper;
import com.mybaits.demo.service.OrgService;
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;
import java.util.List;

/**
 * @ClassName: OrgServiceImpl
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/02/01 23:18:21 
 * @Version: V1.0
 **/
public class OrgServiceImpl implements OrgService {
    @Override
    public void addOrg(Org org) throws IOException {
        //加载核心配置文件
        InputStream resourcesAsStream= Resources.getResourceAsStream("mybaitsConfig.xml");
        //获得sqlsession 工厂对象
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourcesAsStream);
        //获得sqlsession对象
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //执行sql
        OrgMapper orgMapper=sqlSession.getMapper(OrgMapper.class);
        orgMapper.addOrg(org);
        //mybaits 执行更新操作,提交事务
        sqlSession.commit();
        //关闭释放资源
        sqlSession.close();
    }

    @Override
    public List<Org> findByIds() throws IOException {
            //加载核心配置文件
        InputStream resourcesAsStream= Resources.getResourceAsStream("mybaitsConfig.xml");
        //获得sqlsession 工厂对象
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourcesAsStream);
        //获得sqlsession对象
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //执行sql
        OrgMapper orgMapper=sqlSession.getMapper(OrgMapper.class);
        List<Org> orgList=orgMapper.findAllOrg();
        //mybaits 执行更新操作,提交事务
        sqlSession.commit();
        //关闭释放资源
        sqlSession.close();
        return orgList;
    }

}

2.6 javabean层

package com.mybaits.demo.bean;

import java.util.Date;

/**
 * @ClassName: Org
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/01/31 16:13:51 
 * @Version: V1.0
 **/
public class Org {
    private int id;
    private String orgName;
    private Date createTime;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getOrgName() {
        return orgName;
    }

    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    @Override
    public String toString() {
        return "Org{" +
                "id=" + id +
                ", orgName='" + orgName + '\'' +
                ", createTime=" + createTime +
                '}';
    }
}

2.7 在数据创建表

2.8 调用

package com.mybaits.demo;

import com.mybaits.demo.bean.Org;
import com.mybaits.demo.bean.User;
import com.mybaits.demo.service.OrgService;
import com.mybaits.demo.service.UserService;
import com.mybaits.demo.service.UserService2;
import com.mybaits.demo.service.impl.OrgServiceImpl;
import com.mybaits.demo.service.impl.UserServiceImpl;
import com.mybaits.demo.service.impl.UserServiceImpl2;
import com.sun.org.apache.xpath.internal.operations.Or;
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.apache.log4j.Logger;
import org.omg.PortableInterceptor.INACTIVE;

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


/**
 * @ClassName: App2
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/01/30 21:54:06 
 * @Version: V1.0
 **/
public class App2 {
    private static Logger log = Logger.getLogger(App2.class);
    public static void main(String[] args) throws IOException {
        //方式一:传统方法
        //UserService userService=new UserServiceImpl();
        //userService.findAll();
        //方法二: 代理方式
        /**
        UserService2 userService=new UserServiceImpl2();
        userService.findAll();
        List<Integer> dataList=new ArrayList<Integer>();
        dataList.add(1);
        dataList.add(2);
        userService.findByIds(dataList);
        log.info("执行完了!!!");
         **/
        /**
        OrgService  os=new OrgServiceImpl();
        Org org =new Org();
        org.setCreateTime(new Date());
        org.setId(1);
        org.setOrgName("ljf");
        os.addOrg(org);

         **/
        OrgService  os=new OrgServiceImpl();
        List<Org> orgList=os.findByIds();
        System.out.println("orglist:"+orgList);
        System.out.println("....");
    }

}

添加:

查询:

总结:实现了添加的时候createtime字段存储是long型,查询返回的是date类型

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值