后端分页查询的sql dao serice contoller 写法示例

本文讲解了SQL中的limit关键字如何与实际索引对应,以及在Java Service中如何处理页数到索引值的转换。重点讨论了DAO、Service和Controller中关于分页参数的使用和处理方式。
摘要由CSDN通过智能技术生成

SQL:
limit a,b
a 表示查询开始索引,从0开始
b表示查询的条数

limit 5,8表示查询从索引5开始的8条数据

<select id="listPage" resultMap="categoryMapper">
        select * from category
        <where>
            <if test="cateName!=null and cateName!=''">
                cateName like '%${cateName}%'
            </if>
            and deleted=0
        </where>
        limit #{page},#{size}
    </select>

DAO

这里的page含义其实不是页数,而是索引号

List<Category> listPage(@Param("page") int page,
                            @Param("size") int size,
                            @Param("cateName")String cateName);

Service

在Service的实现中进行页数到索引值的转换,即索引值=(页数减去1)*size

其实如果把dao和sql中的参数名改为fromindex 就比较好理解

@Override
    public List<Category> listPageCategory(int page, int size,String cateName) {
        return categoryDao.listPage((page-1)*size,size,cateName);
    }

Controller

Controller中的page就是页数

@RequestMapping("/listPage")
    public Map<String,Object>listPage(int page,int rows,String cateName){
        Map<String,Object> map=new HashMap<>();
        //统计分页记录数返回到页面中去,map的键不能随意写,前端表格规定的名称
        map.put("total",categoryService.countCategory(cateName));
        //结果及的map的键也是不能随意写,前端表格规定的名称
        map.put("rows",categoryService.listPageCategory(page,rows,cateName));
        return map;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
是的,一般情况下,Java Web开发中的学生系统会按照MVC(Model-View-Controller)模式进行设计。其中,JDBC连接数据库部分通常会采用DAO(Data Access Object)模式进行封装,以提高代码的可维护性和可扩展性。 下面是一个简单的学生信息管理系统的示例代码: 1. Entity 首先,定义一个学生信息的实体类,用于封装学生信息: ```java public class Student { private int id; private String name; private int age; // 其他属性和方法省略 // ... } ``` 2. DAO 然后,定义一个学生信息的数据访问对象(DAO)接口,用于定义对学生信息进行增删改查的方法: ```java public interface StudentDao { public void add(Student student); public void delete(int id); public void update(Student student); public Student findById(int id); public List<Student> findAll(); } ``` 3. Service 接着,定义一个学生信息的服务(Service)接口,用于定义对学生信息进行业务逻辑处理的方法: ```java public interface StudentService { public void addStudent(Student student); public void deleteStudent(int id); public void updateStudent(Student student); public Student findStudentById(int id); public List<Student> findAllStudents(); } ``` 4. DAO实现类 然后,定义一个学生信息的DAO实现类,用于实现对学生信息进行增删改查的方法: ```java public class StudentDaoImpl implements StudentDao { private Connection conn; public StudentDaoImpl(Connection conn) { this.conn = conn; } @Override public void add(Student student) { // 实现添加学生信息的方法 // ... } @Override public void delete(int id) { // 实现删除学生信息的方法 // ... } @Override public void update(Student student) { // 实现更新学生信息的方法 // ... } @Override public Student findById(int id) { // 实现根据ID查找学生信息的方法 // ... } @Override public List<Student> findAll() { // 实现查询所有学生信息的方法 // ... } } ``` 5. Service实现类 最后,定义一个学生信息的服务实现类,用于实现对学生信息进行业务逻辑处理的方法,以及调用DAO的方法进行增删改查操作: ```java public class StudentServiceImpl implements StudentService { private StudentDao studentDao; public StudentServiceImpl(StudentDao studentDao) { this.studentDao = studentDao; } @Override public void addStudent(Student student) { studentDao.add(student); } @Override public void deleteStudent(int id) { studentDao.delete(id); } @Override public void updateStudent(Student student) { studentDao.update(student); } @Override public Student findStudentById(int id) { return studentDao.findById(id); } @Override public List<Student> findAllStudents() { return studentDao.findAll(); } } ``` 6. UI(用户界面) 在UI界面中,可以通过调用Service的方法来实现对学生信息进行增删改查操作。例如,添加学生信息的代码如下: ```java // 创建学生信息对象 Student student = new Student(); student.setName("张三"); student.setAge(20); // 调用Service的方法添加学生信息 StudentService studentService = new StudentServiceImpl(new StudentDaoImpl(conn)); studentService.addStudent(student); ``` 以上是一个简单的学生信息管理系统的示例代码,实际的项目中可能会更加复杂,但是基本的架构和设计思路是类似的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wow_awsl_qwq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值