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);
注:
使用#{}可能存在问题