400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

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

今天小编给大家分享一下基于Java如何用Mybatis实现oracle批量插入及分页查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

我们提供的服务有:成都做网站、网站设计、微信公众号开发、网站优化、网站认证、和布克赛尔蒙古ssl等。为超过千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的和布克赛尔蒙古网站制作公司

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、创建序列

删除序列语法: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文件:


    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() < pageSize) {
            searchAll = false;
        }
        if (CollectionUtils.isNotEmpty(beans)) {
            result.addAll(beans);
        }
        pageNum++;
    }
    log.info("最终查询数量:", result.size());
    return result;
}

mapper.xml文件编写



    SELECT tt.*	FROM
    (
        SELECT t.*, ROWNUM rown 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 where ROWNUM  #{end}
    )tt
    where tt.rown > #{start}

以上就是“基于Java如何用Mybatis实现oracle批量插入及分页查询”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。


当前名称:基于Java如何用Mybatis实现oracle批量插入及分页查询
标题链接:http://mzwzsj.com/article/pohjoh.html

其他资讯

让你的专属顾问为你服务