
MyBatis中不同数据库的差异
发布日期:2021-05-07 13:38:27
浏览次数:16
分类:技术文章
本文共 1377 字,大约阅读时间需要 4 分钟。
下面有这样一个场景:
数据库的某些字段是自增产生的(比如说mysql,他就有自增的功能)
我在插入数据的时候就没插入自增的那一段数据,但在插入数据后,我想看看自增的这条数据是什么(回写操作),下面我们通过这个问题进行分别讲述: mysql支持自增 只需要配置两个属性即可: useGeneratedKeys=“true” keyProperty="stuNo" KeyProperty指定自增的字段!insert into student(stuName,stuAge,graName) values(#{stuName},#{stuAge},#{graName})
oracle数据库通过序列实现自增,想要实现回写功能,请看下面:
create sequence myseq increment by 1 start with 1;
方式一:before(推荐)
通过 的字标签 实现: 在 中查询下一个序列(自增后的值),再将此值传入keyProperty="stuNo"属性,最后在真正执行时 使用该属性值。select myseq.nextval from dual insert into student(stuno,stuName,stuAge,graName) values(#{stuNo} , #{stuName},#{stuAge},#{graName})
方式二:after
select myseq.currval from dual insert into student(stuno,stuName,stuAge,graName) values(myseq.nextval , #{stuName},#{stuAge},#{graName})
处理NULL值
oracle: 如果插入的字段是Null, 提示错误: Other 而不是null
mysql:如果插入的字段是Null, 可以正常执行(没有约束) 原因: 各个数据库 在mybatis中 对各种数据类型的 默认值不一致。 mybatis中,jdbcTypeForNull(如果是null) ,则默认值OTHER。Other来说,MySQL能够处理(NULL),但是Oracle不行。 解决: oracle: null ->OTHER ,需要手工告诉oracle :other ->null a.修改具体的sql标签 当 某个数据类型oracle无法处理时,告诉它用默认值null;注意,此时设置的jdbcType=NULL不会影响正常的赋值(“zs”)insert into student(stuno,stuName) values(#{stuNo} , #{stuName,jdbcType=NULL})
b.配置 mybatis全局配置文件conf.xml
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月22日 12时00分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java Socket网络编程-总结
2019-03-04
Linux通过yum仓库安装gcc详细教程
2019-03-04
加油站(贪心)
2019-03-04
最长的连续元素序列长度(哈希表)
2019-03-04
访问docker中的nginx容器部署
2019-03-04
LNMP环境搭建
2019-03-04
PostgreSQL 分区表探索(pg_pathman)数据库优化
2019-03-04
设计一个验证系统
2019-03-05
ubuntu 安装 vncserver
2019-03-05
centos7防火墙导致nginx无法访问
2019-03-05
python绘制一份完美的中国地图
2019-03-05
Python 超级简单精准计算地点日出日落时间
2019-03-05
准确率94%!Python 机器学习识别微博或推特机器人
2019-03-05
Python 元组Tuple 相对于数组List的优势
2019-03-05
Android OTA升级
2019-03-05
Android基本知识
2019-03-05
在Java中,return null 是否安全, 为什么?
2019-03-05
命令模式【Command Pattern】
2019-03-05