欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > JAVA开发学习-day22

JAVA开发学习-day22

2025/10/29 2:07:35 来源:https://blog.csdn.net/W_ZH511/article/details/141088672  浏览:    关键词:JAVA开发学习-day22

JAVA开发学习-day22

1. 查询与分页

1.1 前端

在表单上方添加两个输入框和查询按钮,用于查询数据

<el-input v-model="checkObj.name" style="width: 150px" placeholder="请输入查询的姓名" />
<el-input v-model="checkObj.phoneNumber" style="width: 150px" placeholder="请输入查询的手机号" />
<el-button type="primary" @click="checkData">查询</el-button>

在表单下面添加分页组件

<!-- current-page当前页数 -->
<!-- size:每页的条数 -->
<el-pagination:page-size = "checkObj.size":current-page="checkObj.page"background layout="prev, pager, next" :total="total" @current-change="checkData" />

checkObj对象用于接收输入框中输入的数据和当前的页码,checkData为点击查询按钮或点击分页执行的方法,total为查询数据的总行数

定义checkObj对象和total

<script>const total = ref(100)const checkObj = ref({size:3,page:1})
</script>

实现checkData方法,参数为val,当点击查询按钮时val不是number类型,点击分页按钮时val为number类型,由val的类型来判断点击的是哪一个按钮

<script>
const checkData = async (val) => {//获取当前页数if(typeof val == 'number'){checkObj.value.page = val;}//查询数据let result = await easyapi.getSearch('/api/member', checkObj.value)//更新表格中的数据tableData.value = result.data.list;total.value = result.data.count;
}
</script>

将onMounted中的实现改为调用checkData方法

<script>
onMounted(async function () {checkData();
})
</script>

1.2 后端

因为接收的数据包括具体的数据对象的属性值和分页的数据,所以先在util包中创建工具类Page

public class Page {private int size;private int page = -1;private int start;public int getSize() {return size;}public void setSize(int size) {this.size = size;}public int getPage() {return page;}public void setPage(int page) {this.page = page;}public int getStart() {//查询的起始位置及页码-1乘以每页的大小return (page - 1) * size;}public void setStart(int start) {this.start = start;}
}

在接收多个参数时,Mapper实现方法的参数必须要使用@Param标识符来起别名,在.xml文件中也必须使用规定的别名

@Mapper
public interface IMemberDao {//返回查询的对象List<Member> getMember(@Param("member") Member member,@Param("page") Page page);//返回查询的总页数int getMemberCount(@Param("member") Member member);
}

在.xml文件中实现sql语句

<sql id="getMemberWhere"><where><if test="member.name != null and member.name != ''"><bind name="nameLike" value="'%' + member.name + '%'"/>name like #{nameLike}</if><if test="member.phoneNumber != null and member.phoneNumber != ''"><bind name="phoneNumberLike" value="'%' + member.phoneNumber + '%'"/>and phoneNumber like #{phoneNumberLike}</if>and isDel = 0</where>
</sql><select id="getMember" resultType="com.easy.bean.Member">select * from members<include refid="getMemberWhere"></include><if test="page.page >=0 and page.size > 0">limit #{page.start}, #{page.size}</if>
</select><select id="getMemberCount" resultType="int">select count(*) from members<include refid="getMemberWhere"></include>
</select>

当我们的sql语句需要复用时,可以在<sql>标签中写下需要服用的语句,当需要使用时,使用<include>标签,将refid设置为<sql>标签的id就可以复用sql语句

Service层的实现省略

Controller实现

@RestController
public class MemberController {@AutowiredIMemberService memberS;@GetMapping("member")public CommonResult getMember(Member member, Page page){List<Member> list = memberS.getMember(member,page);int count = memberS.getMemberCount(member);//使用map来存储查询的列表和总行数HashMap map = new HashMap<>();map.put("list", list);map.put("count", count);return CommonResult.success(map);}
}

由此实现了分页和查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词