mybatis连接oracle写一个动态分页查询
时间: 2023-10-16 15:06:34 浏览: 156
SpringMVC+Mybatis实现的Mysql分页数据查询的示例
首先,确保已经正确配置了 MyBatis 和 Oracle 数据库的连接。
然后,可以按照以下步骤编写动态分页查询:
1. 创建一个 Mapper 接口,在其中定义一个方法,用于查询数据并分页返回结果。方法参数中可以定义一个 Page 对象,用于传递分页信息。
```java
public interface UserMapper {
List<User> selectUsers(@Param("name") String name, @Param("page") Page page);
}
```
2. 在对应的 Mapper XML 文件中,编写 SQL 语句,根据传入的参数进行动态查询和分页。
```xml
<select id="selectUsers" parameterType="map" resultType="User">
SELECT *
FROM (
SELECT ROWNUM rn, t.*
FROM (
SELECT *
FROM USER
<where>
<if test="name != null and name != ''">
AND NAME LIKE '%' || #{name} || '%'
</if>
</where>
ORDER BY ID DESC
) t
WHERE ROWNUM <= #{page.end}
)
WHERE rn >= #{page.start}
</select>
```
其中,使用了 Oracle 的 ROWNUM 机制,以实现分页查询。同时,使用了 MyBatis 的动态 SQL 标签 `<where>` 和 `<if>`,根据传入的参数动态生成 SQL 语句。
3. 在调用 Mapper 方法时,传入分页信息。
```java
public List<User> getUsers(String name, int pageNum, int pageSize) {
Page page = new Page(pageNum, pageSize);
List<User> users = userMapper.selectUsers(name, page);
return users;
}
```
其中,`Page` 类是自定义的分页信息类,包含当前页码、每页显示数量、起始行号等信息。在 Mapper XML 文件中使用了 `#{page.start}` 和 `#{page.end}` 属性,以获取分页起始行和结束行。
至此,动态分页查询就完成了。可以根据需要调整 SQL 语句和分页信息类的定义,以适应不同的需求。
阅读全文