java使用mybatis连接oracle对表中timestamp类型的存储

1)在参数中引入data类型

<?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.tset.Dao.TestDao">
    
	<insert id="insert" parameterType="map">
		insert into testtable
		<trim prefix="(" suffix=")" suffixOverrides=",">
			<if test="name != null">name,</if>
			<if test="time != null">time,</if>
		</trim>
		<trim prefix="values(" suffix=")" suffixOverrides=",">
			<if test="name != null">#{name},</if>
			<if test="time != null">#{time},</if>
		</trim>
	</insert>
	
</mapper>
Map<String,Object> params = new HashMap<>();
params.put("name","test"); params.put("time ",new Date(System.currentTimeMillis()));
       
testDao.insert(params);

注:
使用${}可能存在问题

2)使用oracle中的函数to_timestamp( " 日期字符串 ", " 该字符串的日期格式 ")
例:

  • select to_timestamp( “2021-03-08”, “yyyy-mm-dd hh24:mi:ss.ff”)

注:

  • yyyy-mm-dd hh24:mi:ss.ff 为24小时制
  • 第一个参数的长度不能大于第二的参数
<?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.tset.Dao.TestDao">
    
	<insert id="insert" parameterType="map">
		insert into testtable
		<trim prefix="(" suffix=")" suffixOverrides=",">
			<if test="name != null">name,</if>
			<if test="time != null">time,</if>
		</trim>
		<trim prefix="values(" suffix=")" suffixOverrides=",">
			<if test="name != null">#{name},</if>
			<if test="time != null">${time},</if><!--此处使用${}-->
		</trim>
	</insert>
	
</mapper>
Map<String,Object> params = new HashMap<>();
params.put("name","test");
params.put("time ","to_timestamp( "2021-03-08", "yyyy-mm-dd hh24:mi:ss.ff")");

testDao.insert(params);

注:
使用#{}可能存在问题

posted @ 2022-03-07 18:04  叕叕666  阅读(562)  评论(0)    收藏  举报