mybatis oracle 分页+模糊查询

实现分页的方式有很多,但常用的是通过SQL来显示分页。

下面就来介绍mybatis 来实现Oracle分页的写法:(ps:不同数据库的写法有区别)

一、分页数据

 1 <select id="findPageByCode" parameterType="java.util.Map" resultMap="pageVO">
 2         select * from
 3         (
 4             select A.* ,ROWNUM rn
 5             from (select co_code,co_name
 6             from IP_COMPANY
 7             <where>
 8                 <if  test=‘co_code != null and co_code!=""‘ >
 9                     co_code like ‘‘||#{co_code}||‘%‘
10                 </if>
11             </where> ORDER BY co_code )A
12
13              <if test=‘pageNumStop != null and pageNumStop!=""‘ >
14                  <![CDATA[where ROWNUM <=#{pageNumStop}]]>
15              </if>
16         )
17         <if test=‘pageNumBegin != null and pageNumBegin!=""‘ >
18             Where rn >=#{pageNumBegin}
19         </if>
20     </select>

解释:

1、由于传递多个参数,所以使用Map集合,也可以使用pojo对象,但是变量名要保持一致。

2、由于我的需求是向右模糊查询所以写成 co_code like ‘‘||#{co_code}||‘%‘ 的形式,可以根据自己的需求修改%。

3、使用<![CDATA [ ]]>是为了过滤掉文本字段。这里我还有点不是很明白,因为传过来的pageNumStop是int型的吗?

那么下面的Where rn >=#{pageNumBegin} ,不加<![CDATA[]]>也可以通过。

4、rn是ROWNUM的别名。

5、第三个select开始是你要查询的数据。

二、记录总数

 1 <select id="selectCount" parameterType="java.util.Map" resultType="int">
 2         select * from
 3         (
 4             select A.* ,ROWNUM rn
 5             from (select count(*)
 6             from IP_COMPANY
 7             <where>
 8                 <if  test=‘co_code != null and co_code!=""‘ >
 9                     co_code like ‘‘||#{co_code}||‘%‘
10                 </if>
11             </where>)A
12
13              <if test=‘pageNumStop != null and pageNumStop!=""‘ >
14                  <![CDATA[where ROWNUM <=#{pageNumStop}]]>
15              </if>
16         )
17         <if test=‘pageNumBegin != null and pageNumBegin!=""‘ >
18             Where rn >=#{pageNumBegin}
19         </if>
20     </select>

解释:

1、和上面没什么太大区别,只是通过count()函数来查询记录的总数。

2、返回值也要做相应的修改。

时间: 2024-10-10 06:58:07

mybatis oracle 分页+模糊查询的相关文章

sqlserver 分页模糊查询

   积少成多 ----  仅以此致敬和我一样在慢慢前进的人儿 问题: 在sqlserver 进行模糊查询,出现问题 最初使用“concat”,进行拼串操作,如下所示: <select id = "queryCount" resultType="int" > select count(*) from t_user <where> <if test = "queryText!= null"> loginacct

Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办--转自http://www.jb51.net/article/88236.htm

这篇文章主要介绍了Mybatis使用MySQL模糊查询时输入中文检索不到结果的解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. ? 1 2 3 4 5 try { realName = new String(realNam

mybatis中的模糊查询,Oracle和MySQL中的concat

MySQL数据库,利用concat函数即可,MySQL不用能||连接字符串 mapper.xml select * from tb_content_category where title like concat('%',#{paramMap.TITLE, jdbcType=VARCHAR},'%') Oracle数据库,利用concat函数或者||,Oracle数据库利用concat函数时,需要嵌套concat,因为Oracle的concat函数每次只能连接两个字符串 mapper.xml s

mybatis 全查 分页 模糊查询一体

<!-- 全查 分页 模糊--> <select id="selectAll" resultMap="BaseResultMap" > SELECT NOTICE_ID,NOTICE_TITLE,TYPE,DATETIME FROM pt_notice <where> <if test=" type != null and type != '' "> <bind name="fTyp

Mybatis框架的模糊查询(多种写法)、删除、添加

学习Mybatis这么多天,那么我给大家分享一下我的学习成果.从最基础的开始配置. 一.创建一个web项目,看一下项目架构 二.说道项目就会想到需要什么jar 三.就是准备大配置链接Orcl数据库 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "htt

8.mybatis动态SQL模糊查询 (多参数查询,使用parameterType)

多参数查询,使用parameterType.实例: 用户User[id, name, age] 1.mysql建表并插入数据 2.Java实体类 public class User { public User() { } public User(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } private int id; private String name;

回味Oracle的模糊查询

select table_name,tablespace_name,temporary from user_tables where table_name like '%PROV%' 分析: table_name:表名(varchar2(30)); tablespace_name:存储表名的表空间(varchar2(30)): temporary:是否为临时表(varchar2(1)). 4种通配符的含义 % 表示零个或多个字符 _ 表示单个字符 [] 表示范围[a-f]或集合[abcdef]的

Oracle 特殊字符模糊查询的方法

最近在写DAO层的时候,遇到一个问题,就是使用like进行模糊查询时,输入下划线,无法精确查到数据,而是返回所有的数据. 这让我很好奇,百度之后才发现,原来是因为有些特殊字符需要进行转义才可以进行查询. 首先理解一下什么是特殊字符. 在ascii码表中,特殊字符的范围如下.即从32~47 58~64 91~96 123~126. 模糊查询时,有两种方法可以进行转换. 1. 使用REGEXP_LIKE方法,这是个使用正则表达式来查询的方法,因此有此字符需要进行转义才能查询,如$ *等,转义符为反斜

Mybatis中的模糊查询

1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 我就是按照此方法实现了功能. 其实还有种方法:像这样写也行: 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE '%${text}%'; 这个我试过之后,发现并没有实现模糊查询的功能,而且目前也不知道哪里出错了,如果有人知道请指教. 3. 程序中拼