分页查找功能

这两个月来,一直在学做项目,学到了一个如何做分页,将页面设计做得更加简洁。
下面是一个用存储过程写的分页查找功能。

---------------分页查找,功能通用--------------------
create  proc PagingForAll
 @TableName nvarchar(50), ---表
 @Columns nvarchar(500), ---查询的列
 @Where nvarchar(500)='', ---查询条件
 @IdentityColumn nvarchar(50), ---列,增长列,一般为主键
 @OrderBy nvarchar(50)='', --通过哪列排序
 @PageIndex int,  ----第N页
 @PageSize int =50 ----每页多少行
as
 set nocount on
 declare @sql nvarchar(1000) 
 if  len(@OrderBy)=0
    set @OrderBy =@IdentityColumn
    set @sql='select top '+convert(nvarchar(10), @PageSize)+' '+@Columns+'  from '+@TableName+' where  1=1     '+@Where+'  and '+@IdentityColumn+'>
     ( select isnull(max('+@IdentityColumn+'),0) from
     ( select top '+convert(nvarchar(10), @PageSize*(@PageIndex-1))+' '+@IdentityColumn+' from ['+@TableName+'] 
      where 1=1  '+@Where+' order by '+@OrderBy+' ) t)'
 exec(@sql)
 set nocount off
go

好的,这是一个比较复杂的问题,需要分步骤回答。首先,我们需要按照要求在 Eclipse 中创建一个 Java 项目,然后在项目中创建一个实体类,例如: ```java public class User { private int id; private String name; private String email; // 省略 getter 和 setter 方法 } ``` 接下来,我们需要创建 Service 层和 DAO 层。这里我们先创建一个 UserService 接口和一个 UserDao 接口,然后再创建它们的实现类 UserServiceImpl 和 UserDaoImpl。UserService 和 UserDao 接口定义如下: ```java public interface UserService { void addUser(User user); void deleteUserById(int id); void updateUserById(int id, String name, String email); User getUserById(int id); List<User> getUsersByPage(int pageIndex, int pageSize); } public interface UserDao { void addUser(User user); void deleteUserById(int id); void updateUserById(int id, String name, String email); User getUserById(int id); List<User> getUsersByPage(int pageIndex, int pageSize); } ``` 然后我们创建 UserServiceImpl 和 UserDaoImpl 实现这些接口的方法。这里我们使用 List 集合来存储数据,示例代码如下: ```java public class UserServiceImpl implements UserService { private List<User> userList = new ArrayList<>(); @Override public void addUser(User user) { userList.add(user); } @Override public void deleteUserById(int id) { for (User user : userList) { if (user.getId() == id) { userList.remove(user); break; } } } @Override public void updateUserById(int id, String name, String email) { for (User user : userList) { if (user.getId() == id) { user.setName(name); user.setEmail(email); break; } } } @Override public User getUserById(int id) { for (User user : userList) { if (user.getId() == id) { return user; } } return null; } @Override public List<User> getUsersByPage(int pageIndex, int pageSize) { int fromIndex = (pageIndex - 1) * pageSize; int toIndex = Math.min(fromIndex + pageSize, userList.size()); return userList.subList(fromIndex, toIndex); } } public class UserDaoImpl implements UserDao { private List<User> userList = new ArrayList<>(); @Override public void addUser(User user) { userList.add(user); } @Override public void deleteUserById(int id) { for (User user : userList) { if (user.getId() == id) { userList.remove(user); break; } } } @Override public void updateUserById(int id, String name, String email) { for (User user : userList) { if (user.getId() == id) { user.setName(name); user.setEmail(email); break; } } } @Override public User getUserById(int id) { for (User user : userList) { if (user.getId() == id) { return user; } } return null; } @Override public List<User> getUsersByPage(int pageIndex, int pageSize) { int fromIndex = (pageIndex - 1) * pageSize; int toIndex = Math.min(fromIndex + pageSize, userList.size()); return userList.subList(fromIndex, toIndex); } } ``` 接下来,我们需要编写单元测试来测试我们的代码。我们可以使用 JUnit 框架来编写测试用例,示例代码如下: ```java public class UserServiceTest { private UserService userService = new UserServiceImpl(); @Test public void testAddUser() { User user = new User(); user.setId(1); user.setName("张三"); user.setEmail("zhangsan@example.com"); userService.addUser(user); assertEquals(1, userService.getUserById(1).getId()); } @Test public void testDeleteUserById() { User user = new User(); user.setId(1); user.setName("张三"); user.setEmail("zhangsan@example.com"); userService.addUser(user); userService.deleteUserById(1); assertNull(userService.getUserById(1)); } @Test public void testUpdateUserById() { User user = new User(); user.setId(1); user.setName("张三"); user.setEmail("zhangsan@example.com"); userService.addUser(user); userService.updateUserById(1, "李四", "lisi@example.com"); assertEquals("李四", userService.getUserById(1).getName()); assertEquals("lisi@example.com", userService.getUserById(1).getEmail()); } @Test public void testGetUserById() { User user = new User(); user.setId(1); user.setName("张三"); user.setEmail("zhangsan@example.com"); userService.addUser(user); assertEquals(user, userService.getUserById(1)); } @Test public void testGetUsersByPage() { User user1 = new User(); user1.setId(1); user1.setName("张三"); user1.setEmail("zhangsan@example.com"); userService.addUser(user1); User user2 = new User(); user2.setId(2); user2.setName("李四"); user2.setEmail("lisi@example.com"); userService.addUser(user2); User user3 = new User(); user3.setId(3); user3.setName("王五"); user3.setEmail("wangwu@example.com"); userService.addUser(user3); List<User> userList = userService.getUsersByPage(2, 2); assertEquals(1, userList.size()); assertEquals(user3, userList.get(0)); } } ``` 最后,我们需要在 Eclipse 中运行这些测试用例,确保它们能够正确地运行。如果测试用例执行成功,那么我们的代码就完成了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值