Mybatis实现oracle批量插入及分页查询

网友投稿 1067 2022-11-06 10:44:11

Mybatis实现oracle批量插入及分页查询

1、单条数据insert

insert into userinfo (USERID, USERNAME, AGE) values(1001,'小明',20); SELECT userinfo_userid_seq.nextval as userid from dual insert into EPG_ALARM_INFO (USERID, USERNAME, AGE) values (#{userid}, #{username}, #{age}) insert into EPG_ALARM_INFO (USERID, USERNAME, AGE, TIME) values (#{userid}, #{username}, #{age}, sysdate)

2、批量数据批量insert

insert all into 的方式返回值由最后的select 决定

INSERT ALL INTO userinfo (USERID, USERNAME, AGE) values(1001,'小明',20) INTO userinfo (USERID, USERNAME, AGE) values(1002,'小红',18) INTO userinfo (USERID, USERNAME, AGE) values(1003,'张三',23) select 3 from dual; begin insert into userinfo (USERID, USERNAME, AGE) values(1001,'小明',20); insert into userinfo (USERID, USERNAME, AGE) values(1001,'小红',18); insert into userinfo (USERID, USERNAME, AGE) values(1001,'张三',23); end; insert into userinfo (USERID, USERNAME, AGE) select 1001, '小明', 20 from dual union all select 1002, '小红', 18 from dual union all select 1003, '张三', 23 from dual INSERT ALL INTO userinfo (USERID, USERNAME, AGE) VALUES (#{item.userid}, #{item.username}, #{item.age}) select list.size from dual insert into EPG_ALARM_INFO (USERID, USERNAME, AGE) select #{item.userid}, #{item.username}, #{item.age} from dual insert into EPG_ALARM_INFO (USERID, USERNAME, AGE) SELECT userinfo_userid_seq.nextval, m.* FROM ( select #{item.username}, #{item.age} from dual ) m

3、创建序列

minvalue n (/nominvalue):最小值为n maxvalue n (/nomaxvalue):最大值为n start with n:从n开始计数 increment by n:每次增加n cache n (/nocache):缓存n个sequence值 / 不缓存,如果缓存,则会有跳号的危险 noorder (/order):不保证序列号按顺序生成请求 cycle n (/nocycle):如果到达最大值n后,再次从start with n开始 currval:序列的当前值,新序列必须使用一次nextval 才能获取到值,否则会报错 nextval:表示序列的下一个值。新序列首次使用时获取的是该序列的初始值,从第二次使用时开始按照设置的步进递增 删除序列语法: drop sequence seq_表名 create sequence SEQ_USERINFO minvalue 1 maxvalue 9999999999 start with 1 increment by 1 nocache; drop sequence SEQ_USERINFO

4、oracle分页查询

前端与后端交互,分页查询

service业务实现

public List queryPageBadUserInfo(TbadUserQuery queryModel) { log.info("分页查询请求参数,{}", JSON.toJSONString(queryModel)); int pageNum = queryModel.getPageNum(); // 开始页 int pageSize = queryModel.getPageSize(); // 每页数量 queryModel.setStart((pageNum - 1) * pageSize); // 开始行数 (+1后) queryModel.setEnd(pageNum * pageSize); // 结束行数 List beans = badUserWDao.queryPageBadUserInfo(queryModel); log.info("最终查询数量:", beans.size()); return beans; }

mapper.xml文件

后端海量数据导出,批量查询

service业务实现 public List queryPageBadUserInfo(TbadUserQuery queryModel) { log.info("分页查询请求参数,{}", JSON.toJSONString(queryModel)); List result = new ArrayList<>(); int pageNum = queryModel.getPageNum(); // 开始页 int pageSize = queryModel.getPageSize(); // 每页数量(可以每页设置为200/500/1000),每次查询的条数 boolean searchAll = true; while (searchAll){ queryModel.setStart((pageNum - 1) * pageSize); // 开始行数 (+1后) queryModel.setEnd(pageNum * pageSize); // 结束行数 List beans = badUserWDao.queryPageBadUserInfo(queryModel); if (null == beans || beans.size() < pageSize) { searchAll = false; } if (CollectionUtils.isNotEmpty(beans)) { result.addAll(beans); } pageNum++; } log.info("最终查询数量:", result.size()); return result; } mapper.xml文件编写

总之,以上各种方法是博主自测惯用方法,代码可能提供的不够完善,如果有需要全部代码实现的可以私信博主;如果有啥不足之处,尽管下方参与评论指出,大家可以相互组学习相互探讨,欢迎大家参与评论;如果本编文章对于心如火焚的您有所帮助,希望帮忙点赞+收藏!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ORACLE 存储过程异常捕获并抛出
下一篇:c# winform 为按钮动态背景图片
相关文章