基于Java如何用Mybatis实现oracle批量插入及分页查询

您所在的位置:网站首页 成立编剧工作室 基于Java如何用Mybatis实现oracle批量插入及分页查询

基于Java如何用Mybatis实现oracle批量插入及分页查询

2023-05-06 12:02| 来源: 网络整理| 查看: 265

基于Java如何用Mybatis实现oracle批量插入及分页查询 发布时间:2023-05-04 11:33:02 来源:亿速云 阅读:86 作者:iii 栏目:编程语言

今天小编给大家分享一下基于Java如何用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_USERINFO4、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文件:

    SELECT tt.* FROM     (              SELECT t.*, ROWNUM rown, COUNT (*) OVER () total FROM         (             select  from T_BAD_USER_W                                                   and city = #{city}                                                       and county = #{county}                                                       and loadtime >= to_date(#{startTime} , 'yyyy-mm-dd hh44:mi:ss')                                                       and loadtime  to_date(#{endTime} , 'yyyy-mm-dd hh44:mi:ss')                                       )t     )tt     where tt.rown > #{start} and tt.rown  #{end} 后端海量数据导出,批量查询

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() 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3