广告
返回顶部
首页 > 资讯 > 精选 >如何使用mybatis自定义日期类型转换器
  • 160
分享到

如何使用mybatis自定义日期类型转换器

2023-06-29 11:06:58 160人浏览 薄情痞子
摘要

本篇内容主要讲解“如何使用mybatis自定义日期类型转换器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用mybatis自定义日期类型转换器”吧!前言使用mybatis中的typeHan

本篇内容主要讲解“如何使用mybatis自定义日期类型转换器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用mybatis自定义日期类型转换器”吧!

    前言

    使用mybatis中的typeHandlers 实现自定义日期类型的转换器。
    重点在2.2 handler中

    一、resources

    如何使用mybatis自定义日期类型转换器

    1.1 sqlMapConfig.xml

    typeHandlers: 自定义的日期类型转换器:
    (1)将日期类型转为long的长整型存入数据库中。
    (2)将数据库中的bigint(本质对应java的long类型)转为date类型。environments:加载数据库mapper: 映射文件的位置

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "Http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <typeHandlers>        <typeHandler handler="com.mytest.handler.DateTypeHandler"></typeHandler>    </typeHandlers>    <environments default="dev">        <environment id="dev">            <transactionManager type="JDBC"></transactionManager>            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver"/>                <property name="url" value="jdbc:Mysql://localhost:3306/test"/>                <property name="username" value="root"/>                <property name="passWord" value="123456"/>            </dataSource>        </environment>    </environments>    <mappers>        <mapper resource="com.mytest.mapper/UserMapper.xml"></mapper>    </mappers></configuration>

    1.2 log4j.properties

    打印日志

    ### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=c:/mylog.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=debug, stdout

    1.3 userMapper.xml

    1.findByid: 通过id查询插入元素

    2.save: xml映射器mapper时,

    useGeneratedKeys:值为true 并分别指定属性:
    keyProperty: 对应的Java对象的主键属性
    keyColumn: 对应的数据库记录主键字段

    <?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="com.mytest.dao.UserMapper"><!--    通过id查询插入元素-->    <select id="findByid" parameterType="int" resultType="com.mytest.pojo.User">        select * from sys_user where id=#{id}    </select><!--    插入元素-->    <insert id="save" parameterType="com.mytest.pojo.User" useGeneratedKeys="true" keyProperty="id" keyColumn="id">        insert into sys_user(id,username,email,password,phoneNum,birthday) values(null,#{username},null,#{password},null,#{birthday})    </insert></mapper>

    二、java结构

    如何使用mybatis自定义日期类型转换器

    2.1 dao

    UserMapper

    1.findByid: 使用id值查询User

    2.save: 插入User到数据库中

    package com.mytest.dao;import com.mytest.pojo.User;import java.util.List;public interface UserMapper {        User findByid(int id);    public void save(User user);}

    2.2 handler

    DateTypeHandler

    1. setNonNullParameter:将java类型 转换成 数据库需要的类型

    2. getNullableResult:将数据库中类型 转换成java类型

    package com.mytest.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<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;    public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {        long aLong = resultSet.getLong(i);    public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {        long aLong = callableStatement.getLong(i);}

    2.3 pojo

    package com.mytest.pojo;import java.util.Date;public class User {    private Integer id;    private String username;    private String password;    private Date birthday;    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {        this.birthday = birthday;    @Override    public String toString() {        return "User{" +                "id=" + id +                ", username='" + username + '\'' +                ", password='" + password + '\'' +                ", birthday=" + birthday +                '}';    public Integer getId() {        return id;    public void setId(Integer id) {        this.id = id;    public String getUsername() {        return username;    public void setUsername(String username) {        this.username = username;    public String getPassword() {        return password;    public void setPassword(String password) {        this.password = password;}

    2.4 service

    service没用进行实现,在本demo中只用于测试使用。
    sqlSession.commit()用于mybatis的事务提交。mybatis的事务默认是不提交的,故在增删改中需要进行事务的提交,在mybatis中事务的提交方式一般有两种:
    1 sqlSession.commit()
    2 采用openSession(true),即可实现自动提交,无需调用commit()方法。

    package com.mytest.service;import com.mytest.dao.UserMapper;import com.mytest.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 java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.List;public class ServiceTest {    public static void main(String[] args) throws IOException {        InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");        SqlSessionFactory sqlSessionFactory = (SqlSessionFactory) new SqlSessionFactoryBuilder().build(inputStream);        //openSession为true则自动提交事务        SqlSession sqlSession = sqlSessionFactory.openSession();        UserMapper mapper = sqlSession.getMapper(UserMapper.class);        User user = new User();        //插入不需要设置id值//        user.setId(5);        user.setUsername("wangwu");        user.setPassword("123");        user.setBirthday(new Date());        //会返回属性值        mapper.save(user);        Integer userId = user.getId();                sqlSession.commit();        User findUser = mapper.findByid(userId);        System.out.println(findUser);    }}

    三 数据表结构及测试

    数据表结构

    如何使用mybatis自定义日期类型转换器

    测试

    如何使用mybatis自定义日期类型转换器

    到此,相信大家对“如何使用mybatis自定义日期类型转换器”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: 如何使用mybatis自定义日期类型转换器

    本文链接: https://www.lsjlt.com/news/324363.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 如何使用mybatis自定义日期类型转换器
      本篇内容主要讲解“如何使用mybatis自定义日期类型转换器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用mybatis自定义日期类型转换器”吧!前言使用mybatis中的typeHan...
      99+
      2023-06-29
    • 使用 mybatis 自定义日期类型转换器的示例代码
      目录前言一、resources1.1sqlMapConfig.xml1.2log4j.properties1.3userMapper.xml二、java结构2.1dao2.2hand...
      99+
      2022-11-13
    • 如何使用JPA自定义VO类型转换
      这篇文章主要介绍如何使用JPA自定义VO类型转换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!JPA自定义VO类型转换(EntityUtils工具类)在JPA查询中,如果需要返回自定义的类,可以使用EntityUti...
      99+
      2023-06-25
    • Java中的BaseTypeHandler自定义类型转换器如何使用
      这篇文章主要介绍“Java中的BaseTypeHandler自定义类型转换器如何使用”,在日常操作中,相信很多人在Java中的BaseTypeHandler自定义类型转换器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
      99+
      2023-06-30
    • Java中的BaseTypeHandler自定义类型转换器的使用
      目录简述通用的类型转换器(存在一些问题)定制类型转换器简述 mysq5.7之后新增了json类型,但是在使用的过程中,Json数组中的值小于Integer.MAX_VALUE,则反序...
      99+
      2022-11-13
    • 使用JPA自定义VO类型转换(EntityUtils工具类)
      目录JPA自定义VO类型转换(EntityUtils工具类)dto,vo,po,bo等实体转换工具类下面宣布这次的主角:dozerJPA自定义VO类型转换(EntityUtils工具...
      99+
      2022-11-12
    • 利用SpringMVC如何实现一个自定义类型转换器
      这篇文章将为大家详细讲解有关利用SpringMVC如何实现一个自定义类型转换器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们在使用SpringMVC时,常常需要把表单中的参数映射到我们对...
      99+
      2023-05-31
      springmvc 类型转换器
    • mybatis自定义参数类型转换器数据库字段加密脱敏
      目录1 问题背景2 解决方案2.1 使用数据库加密算法2.2 使用mybatis的自定义参数类型转换器3 一般web项目使用3.1 创建自定义Java类型3.2 自定义类的转换处理器...
      99+
      2022-11-13
    • Spring中的类型转换器怎么定义使用
      这篇文章主要讲解了“Spring中的类型转换器怎么定义使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring中的类型转换器怎么定义使用”吧!1.类型转换器作用类型的转换赋值2.自定义...
      99+
      2023-07-04
    • hibernate或jpa中使用AliasToBeanResultTransformer自定义类型转换ResultTransformer下划线转驼峰
      在Hibernate或JPA中使用`AliasToBeanResultTransformer`进行自定义类型转换时,可以通过以下步骤...
      99+
      2023-09-12
      jpa
    • C#如何使用delegate类型设计自定义事件
      这篇文章主要介绍C#如何使用delegate类型设计自定义事件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用delegate类型设计自定义事件在C#编程中,除了Method和Property,任何Class都可以...
      99+
      2023-06-04
    • Spring Boot中如何使用Convert接口实现类型转换器
      目录使用Convert接口实现类型转换器Converter接口添加依赖实体类1.User类2.Article类配置类型转化器1.定义全局日期转换器2.定义全局对象转换器3.定义全局L...
      99+
      2022-11-12
    • Java如何使用poi做加自定义注解实现对象与Excel相互转换
      这篇文章将为大家详细讲解有关Java如何使用poi做加自定义注解实现对象与Excel相互转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引入依赖maven<dependency> ...
      99+
      2023-06-15
    • 如何使用Python的重定向关键字来实现高效的数据类型转换?
      Python是一种强大的编程语言,它提供了许多功能和工具,让程序员能够高效地开发应用程序。其中一个非常重要的功能是数据类型转换。在Python中,我们可以使用重定向关键字来实现高效的数据类型转换。本文将介绍如何使用Python的重定向关键字...
      99+
      2023-09-12
      重定向 关键字 数据类型
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作