一.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类型