文档章节

mybatis中mappper写分页查询和批量删除的方法

一个破名想半年
 一个破名想半年
发布于 2016/11/08 20:12
字数 701
阅读 283
收藏 0

用mybatis做项目非常方便,因为它解放了dao的实现类,并且在生成的mapper文件中已有一些基础的被大量使用的对数据库增删改查的语句。让我们编程开发更加注重业务逻辑这块重点。

现在来总结一下我在项目编程中遇到分页查询和批量删除这两个点的解决办法。

使用框架:springMVC+mybatis+mysql

1.分页查询

基础的sql语句如下:

select *<字段名> from tableName limit #{ (page-1)*pagesize },#{pageSize}

其中tablename即表名。

两个参数。其中page表示起始页,pageSize表示每页显示的数据行数

limit关键字的意思就是从哪里开始总共查询多少行了。

例如select *<字段名> from tableName limit  1,5

即表示从第2行开始到第5行的数据

注意是从第2行开始,这就可以解释page=1的问题了,因为数据库是从limit 紧跟着后面参数加1行开始查询的,因此page=1的时候,即从第一页第一行开始查。

另外,提一下oracle的分页语句格式为:

select  * from(select a.*,rownum r from tablename a where 1=1 and 查询条件) where r<(page*pageSize) and r>((page-1)*pageSize)

这里用到了rownum这个参数,是一个嵌套查询语句,至少在这里看上去没有,mysql方便。

2.批量删除

基本的sql语句先贴出来:

DELETE FROM 表名 WHERE id<id对应字段名> IN
        <foreach collection="list" index="index" item="item" open="("
            separator="," close=")">
            #{item}
        </foreach>

其中<foreach></foreach>标签学过jsp的应该挺眼熟,是的,就是遍历的作用。传进来的collection="list",其中list就是被遍历的参数,就是你要批量删除选中的一个或多个id的集合。

通过foreach遍历集合,每个item是遍历出来的一个id,再根据id依次删除表中对应id行的内容。

具体实现代码贴图所示。

mapper.xml:

dao接口方法:

service层方法:

controller中方法:

好了,说完了批量删除,也可以看看其他的批量操作。模板是一样的。

批量更新:

<update id="dao层方法名" parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" open="begin" close="end;" separator="" >
            update tablename
            <set>       
                age = #{item.age}+1,name=#{item.name}
            </set>
            where id = #{item.id};
        </foreach>
    </update>

批量插入:

注意的是mysql和oracle批量插入的语句有差别。

mysql:
<insert id="batchInsertStudent" parameterType="java.util.List">  
    INSERT INTO STUDENT (id,name,sex,tel,address)  
    VALUES   
    <foreach collection="list" item="item" index="index" separator="," >  
        (#{item.id},#{item.name},#{item.sex},#{item.tel},#{item.address})  
    </foreach>  
</insert>

oracle:
<insert id="insertBatch4Oracle" parameterType="List">
        insert into aa(a,b)
        <foreach collection="list" item="item" index="index" separator="union all" >
         select  #{item.a},#{item.b} from dual
        </foreach>
 </insert>

© 著作权归作者所有

一个破名想半年
粉丝 0
博文 16
码字总数 9936
作品 0
青浦
私信 提问
mybatis-plus的使用 ------ 入门

前言: mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很...

贪挽懒月
2018/08/24
0
0
nbfujx/Goku.WebService.Bus

Goku.WebService.Bus 基于SpringBoot + Spring + Apache CXF +Mybatis 开发SOAP的 WebService 服务 备注 版本 说明 1.0.0版本 2.0.0版本 springboot启动 原理 Mybatis基于动态代理实现Mappe...

nbfujx
2018/01/02
0
0
Mybatis 通用Crud-设计思路

更新日志 <!-- 2016-11-13更新 start --> 1 新增批量操作数据方法:批量插入,根据条件删除,根据条件更新指定的列名-字段值。 2 新增高级查询方法:可设置查询列,查询条件,排序,分页。 ...

LittleNewbie
2016/11/12
417
0
Spring Boot [集成-MyBatis]

导读: 在上篇文章中我们介绍了spring-data-jpa的一些常用方法,在这篇文章中我们在介绍关于mybatis与Spring Boot 的集成,及一些常用方法 集成: 这里有两种方式,一种是常规的Spring 应用的...

yangrd
2018/08/27
0
0
Mybatis 通用Crud

前言(说明) 源码地址:https://github.com/LittleNewbie/portal mybatis版本 3.2.6 mybatis crud 较为简陋,请移步至mybatis jpa :https://my.oschina.net/LittleNewbie/blog/895198 实现功能......

LittleNewbie
2016/11/11
929
4

没有更多内容

加载失败,请刷新页面

加载更多

Redox OS 发布 0.5 版

Redox OS 是一个几乎完全以 Rust 语言编写的通用操作系统及周围生态(例如文件系统、显示服务器及 Rust 版本的 libc)。其遵循微内核架构,在一定程度上兼容于 POSIX。 该项目于日前发布了 ...

linuxCool
39分钟前
1
0
更新上传git/gitee项目时出现密码配置错误(incorrect username or password)的解决办法

1.输入【git remote add origin git地址】 命令时出现incorrect username or password的错误,这是因为之前弹出输入账户和密码时输错了,而且会一直默认错误的账户和密码,因此需要把之前输入...

west_coast
46分钟前
0
0
Jenkins基础入门-1-Jenkins简单介绍和环境安装

如果在做自动化测试的朋友,应该熟悉Jenkins,或者至少使用过。如果一个人没有使用过Jenkins或者hudson,hudson是Jenkins的前身,他还说自己做过自动化测试,只能说,他只不过是在做半自动化...

shzwork
46分钟前
0
0
linux上解压版安装jdk,tomcat

需要的安装包 1.vmware12 2.centos7版本 3.安装完成后需要xshell来连接远程虚拟机,虚拟机保证要联网,网络畅通。 4.xftp用来向linux传输文件用,一般来说xshell和xftp配套使用 5.对应的压缩...

architect刘源源
今天
27
0
使用 spring 的 IOC 解决程序耦合

工厂模式解耦 在实际开发中我们可以把三层的对象都使用配置文件配置起来,当启动服务器应用加载的时候,让一个类中的方法通过读取配置文件,把这些对象创建出来并存起来。在接下来的使用的时...

骚年锦时
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部